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. 迅速 - 同じVC
- 3. サードパーティフレームワークの迅速化2
- 4. 迅速な利便性の初期化とジェネリッククラス
- 5. ヒープデータ構造の実装の迅速化
- 6. 怠惰なvarを迅速に再初期化するには?
- 7. 迅速に配列を初期化する方法
- 8. 迅速かつ同時のajaxコール
- 9. 同じ名前の迅速なキャプチャ値
- 10. ファイアベースとテーブルビューデータ複製の迅速化
- 11. ループで同期Webサービスを迅速に呼び出すためのブレーク
- 12. 迅速MySQLの
- 13. 空の配列の配列を迅速に初期化する方法は?
- 14. 機能を迅速に同期化または同期化するにはどうすればよいですか?
- 15. 迅速
- 16. 迅速
- 17. 迅速
- 18. - 迅速
- 19. 迅速
- 20. 迅速
- 21. 迅速
- 22. 迅速
- 23. ナビゲーションコントローラのビューサイズ[迅速]
- 24. 迅速なバックグラウンドの変更が迅速な回答
- 25. dispatch_group_notifyを使用した迅速な非同期要求が機能しない
- 26. Azureのオフライン同期APIでのローカル同期ストアの初期化
- 27. WPFで非同期関数を高速化する方法
- 28. は迅速
- 29. 迅速なラインコントロールステートメント
- 30. 述語 - 迅速
'sem_open()'と友人はSwiftで利用できるようですが、あなたはそれを使ってみましたか? –
私はそれらを見逃してしまった。あなたは答えを投稿できますか?それを受け入れるでしょうか? – Jelly