let lock = NSLock()lock.lock()// do things...lock.unlock()
同
let semaphore = dispatchSemaphore(value: 1)semaphore.wait()// do things...semaphore.signal()
或者我会遇到有关线程安全的问题吗?
解决方法 是的,它们具有相同的功能,既可以解决生产者 – 消费者问题.如果相应配置,则信号量允许多个线程访问共享资源.您可以在同一个并发dispatchQueue中执行块.
{semaphore.wait()// do things...semaphore.signal()}
实际上同样适用于Lock,如果您只希望一个线程以并发方式一次触摸资源.
我发现这有用:https://priteshrnandgaonkar.github.io/concurrency-with-swift-3/
总结以上是内存溢出为你收集整理的swift – DispatchSemaphore是NSLock的一个很好的替代品吗?全部内容,希望文章能够帮你解决swift – DispatchSemaphore是NSLock的一个很好的替代品吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)