是否有可能在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