问题标签 [nslock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
838 浏览

swift - NSLock.lock() 在锁已经持有的情况下执行?

我正在查看一些 Alamofire示例Retrier 代码:

我不知道如何lock.lock()在函数的第一行使用,然后strongSelf.lock.lock()在闭包中将同一行传递给refreshTokens.

如果在执行解锁时直到should方法结束才释放第一个锁,那么第二个锁如何在第一个锁被持有时成功执行?deferstrongSelf.lock.lock()

0 投票
2 回答
12211 浏览

swift - 如何利用 NSLock 防止函数触发两次?

我目前有一组异步函数,它们都在viewDidLoad(). 每个函数的末尾是一个布尔值,在函数完成后从 false 设置为 true。还有一个条件语句检查触发第三个函数的两个函数的布尔值。这个条件语句在两个函数中(我想在两个函数都完成时调用。一般来说:

此设置确保functionThree()只有在两者 functionOnefunctionTwo完成时才能运行。如果functionOne之前完成它的异步内容functionTwo()并达到触发条件functionThree(),它不会这样做,因为checkTwo还没有实现。因此,当functionTwo()' 的异步内容完成时,它会触发functionThree()。这可以正常工作,并且一次没有引起问题。不过,我要明确避免的是异步函数恰好同时完成,因此functionThree()调用。为此,我想设置一个,但是,尽管查找了文档,但我对如何执行此操作的线索为零,因为我需要由两个不同的函数处理相同的锁。有人有想法么?NSLock()

0 投票
1 回答
49 浏览

ios - 保护对 NSManaged 对象数组的读/写访问

我有一个 NSManagedObjects 数组,它由几个片段共享,一些在主队列上,一些在回调闭包内。有时,当我清除这个数组时,代码的其他部分会尝试访问它以读取并在 UI 上显示数据,并且由于它有时找不到数据而崩溃。

我正在考虑使用 NSLocks 来保护这个数组的写入或读取,但是我不确定这种方法是否安全和正确。我愿意接受建议或纠正这种方法。

0 投票
0 回答
83 浏览

objective-c - 如何在函数中使用 NSLock?

这是防止多个线程访问函数 MyTaskF 的正确方法吗?

.h 文件:

.m 文件:

0 投票
2 回答
1663 浏览

multithreading - 使用 DispatchGroup 和 NSRecursiveLock 有什么区别(优点和缺点)?

DispatchGroup使用和有什么区别(优点和缺点)NSRecursiveLock

看起来他们正在做同样的事情。

0 投票
1 回答
1116 浏览

swift - 在主线程上使用 NSLock 安全吗?

我有一个可以从多个线程访问的全局变量,包括从主线程。我想使用 NSLock因为它比 GCD 快

这是我正在尝试做的事情:

NSLock阻塞主线程还是在主线程上使用安全?这也是同样的情况DispatchSemaphore并且应该诉诸排队吗?

0 投票
2 回答
557 浏览

ios - NSLock 在属性设置器中的使用

假设有一个变量我想让线程安全。执行此操作的最常见方法之一:

但是,如果我们像下面的示例中那样更改值,则此属性不是完全线程安全的:

所以我的问题是:在同样的原则上使用 NSLock也不是完全线程安全的吗?

0 投票
1 回答
120 浏览

swift - DispatchQueue 是否也锁定了里面使用的资源?

如果 localSharedResource 也被其他线程访问,我应该使用 lock 吗?