ロックをLockQueue2
にしてロックを解除し、ロックを解除するとLockQueue2
は「番号は」と表示されます。number
はdispatch_after
です。非同期タスクでdispatch_queue_tをロックしてロック解除します
私はこの出力を必要とする:
ある2数設定値1
数が2
数が3
数が3
数設定値である1
番号設定された値であります
let LockQueue = dispatch_queue_create("LockQueue", nil)
func test(num :Int){
var number = 0
let LockQueue2 = dispatch_queue_create("LockQueue2", nil)
dispatch_async(LockQueue){
LockQueue2.lock()
// any process or waiting
sleep(2)
dispatch_sync(LockQueue2) {
number = num
print("number set value ", number)
LockQueue2.unlock()
}
}
dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)){
// any process or waiting
sleep(3)
dispatch_after(LockQueue2) {
print("number is :", number)//*** show number set in last dispatch ***
}
}
}
test(1)
test(2)
test(3)
ランダムなスレッドのプロセスが別のプロセスを待つようにするには、セマフォーを使用してください。したがって、セマフォを作成し、2番目のプロセスがシグナルを待つようにしてから、そのセマフォを最初にプロセスシグナルにします。またはシリアルキューを使用します。 – Rob
おかげで@Lob、私に例を挙げてもらえますか? – solan