是否有可能在ios应用程序中实现Counting Semaphore?如何在iOS应用程序中实现信号量?
5
A
回答
14
是的,这是可能的。 有相当多的同步工具可供选择:
- @synchronized
- NSLock
- NSCondition
- NSConditionLock
- GCD信号灯
- 并行线程锁
- ...
我建议您阅读“Threading Programming Guide”并提出更具体的问题。
4
我无法找到一个本地IOS对象要做到这一点,但它使用C库工作得很好:
#import "dispatch/semaphore.h"
...
dispatch_semaphore_t activity;
...
activity = dispatch_semaphore_create(0);
...
dispatch_semaphore_signal(activity);
...
dispatch_semaphore_wait(activity, DISPATCH_TIME_FOREVER);
希望有所帮助。
6
像这样:
dispatch_semaphore_t sem = dispatch_semaphore_create(0);
[self methodWithABlock:^(id result){
//put code here
dispatch_semaphore_signal(sem);
[self methodWithABlock:^(id result){
//put code here
dispatch_semaphore_signal(sem);
}];
}];
dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
信用http://www.g8production.com/post/76942348764/wait-for-blocks-execution-using-a-dispatch
3
在斯威夫特3可以使用DispatchSemaphore
。
// initialization
let semaphore = DispatchSemaphore(value: initialValue)
// wait, decrement the semaphore count (if possible) or wait until count>0
semaphore.wait()
// release, increment the semaphore count
semaphore.signal()
相关问题
- 1. 如何在Perl中实现信号量线程通信?
- 2. 需要在C#控制台应用程序中实现线程和信号量
- 3. 在iOS应用程序中实现sqlite3_busy_timeout()
- 4. 实现信号量
- 5. 实现信号量
- 6. 如何在iOS中使用Braintree实现支付应用程序
- 7. 如何使用MVC在iOS应用程序中实现设置
- 8. 在C语言中实现带信号量的虚拟程序
- 9. 如何在Hybrid iOS应用程序中实现WebRTC?
- 10. 如何在iOS应用程序中实现图表?
- 11. 如何在iOS应用程序中实现Bayeux协议
- 12. 如何在iOS应用程序中实现XEP-0333?
- 13. 如何在TabBar iOS应用程序中实现模态视图
- 14. 如何在Xcode 6 iOS应用程序中实现main.swift?
- 15. 如何实现全局信号量类
- 16. 如何实现分布式信号量?
- 17. 命令行信号量实用程序
- 18. 在java中实现计数信号量
- 19. 在JS和C++应用程序之间实现类信号量功能
- 20. 如何在iOS应用中通过websockets实现和通信?
- 21. 当我发送远程信号时如何实现应用程序到期?
- 22. 在ios应用程序中实现APNS的完整程序
- 23. 等待/信号(信号量)如何实现伪代码“工作”?
- 24. C中的以下信号量应用程序如何工作?
- 25. 应用程序崩溃dispatch_release信号量?
- 26. 如何实现信号
- 27. 如何实现安全,应用程序间的通讯在IOS
- 28. 如何在iPhone/iPad/iOS应用程序上实现AirPrint按钮?
- 29. 如何在iOS应用程序中启用除零的SIGFPE信号?
- 30. 如何使用信号量实现条件变量?
和OSSpinLock。 – Jano 2012-01-10 12:24:23
@synchonized是我的最爱。如果没有明显的对象阻塞,则将其与全局对象(如静态NSNumber)一起使用。坚持一个信号量模型可能有助于提高可读性等。 – 2012-01-10 13:39:09
在全局对象上同步是一个坏主意。你不知道是否有其他代码也可能同步它,所以你暴露自己有死锁的风险。始终在有限的可见性的情况下进行同步,这对于当前的任务来说是明确的。另外,不要在自我上同步;再次,你不知道还有什么可能使用同一个对象。 – occulus 2017-11-17 22:38:32