POSIXセマフォや共有シリアルディスパッチキューのような複数のプロセス間で同期が必要です。 OS Xのswiftに似たものがありますか?OSXでの同期の迅速化
0
A
答えて
1
名前付きセマフォは、スウィフトに使用できます。
import Darwin
var sema = sem_open("/mysema", O_CREAT, 0o666, 0)
guard sema != SEM_FAILED else {
perror("sem_open")
exit(EXIT_FAILURE)
}
defer { sem_close(sema) }
print("Waiting for semaphore")
sem_wait(sema)
print("Got semaphore")
0
Martin Rが指摘したように、これはスレッドではなくプロセス間で機能します。
はい、確かにGrand Central Dispatch(GCD)についてはshould readです。またはhere。
いいビデオはWWDCでhereです。ここで
がhereから取られたセマフォに関する例です:
private func semaphoreExample2() {
let semaphore = dispatch_semaphore_create(0)
let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
dispatch_async(queue) {
NSLog("Running async task...")
sleep(3)
NSLog("Async task completed")
dispatch_semaphore_signal(semaphore)
}
NSLog("Waiting async task...")
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER)
NSLog("Continue!")
}
それともhereからスウィフト3内の別の1:
// creating the semaphore with a resource count of 1
let semaphore = DispatchSemaphore(value: 1)
let watchdogTime = DispatchTime.now() + DispatchTimeInterval.seconds(1)
...
// synchronize access to a shared resource using the semaphore
if case .TimedOut = semaphore.wait(timeout: watchdogTime) {
print("OMG! Someone was bogarting that semaphore!")
}
// begin access shared resource…
...
// end access to resource
semaphore.signal()
+0
GCDセマフォを異なる*プロセス間で共有することはできますか? –
+0
「プロセス間」の部分が欠落しました:-( –
関連する問題
- 1. サードパーティフレームワークの迅速化2
- 2. ヒープデータ構造の実装の迅速化
- 3. 迅速かつ同時のajaxコール
- 4. 同じ名前の迅速なキャプチャ値
- 5. ファイアベースとテーブルビューデータ複製の迅速化
- 6. ループで同期Webサービスを迅速に呼び出すためのブレーク
- 7. 迅速MySQLの
- 8. 空の配列の配列を迅速に初期化する方法は?
- 9. - 迅速
- 10. 迅速
- 11. 迅速
- 12. 迅速
- 13. 迅速
- 14. 迅速
- 15. ナビゲーションコントローラのビューサイズ[迅速]
- 16. 迅速なバックグラウンドの変更が迅速な回答
- 17. dispatch_group_notifyを使用した迅速な非同期要求が機能しない
- 18. 迅速UIAlertControllerは
- 19. 迅速ダイナミックUIAlertController
- 20. 、レガシー迅速
- 21. AVFoundation miniFrameDuration迅速
- 22. ページインジケータ迅速
- 23. は迅速
- 24. エラーが迅速
- 25. 迅速なエラーシミュレータ
- 26. は迅速
- 27. は迅速
- 28. 迅速絵
- 29. インスタンスメソッド迅速
- 30. が迅速
'sem_open()'と友人はSwiftで利用できるようですが、あなたはそれを使ってみましたか? –
私はそれらを見逃してしまった。あなたは答えを投稿できますか?それを受け入れるでしょうか? – Jelly