私は2つのタスク、task1とtask2を持っています。 task1の終了後にtask2を実行したい。Swiftでマルチスレッドを使用する方法
私はインターネットで検索let globalQueueDefault = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)
dispatch_sync(globalQueueDefault){
self.activityIndicatorView.hidden = false
self.activityIndicatorView.startAnimating()
task1()
sleep(6)
dispatch_sync(globalQueueDefault) {() -> Void in
task2()
}
}
、私はNSLock
、NSConditionLock
とobjc_sync_enter
を見つける...私はそれらを試してみるが、それは動作しません...
let lock = NSLock()
let globalQueueDefault = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)
dispatch_sync(globalQueueDefault){
self.activityIndicatorView.hidden = false
self.activityIndicatorView.startAnimating()
self.lock.lock()
task1()
self.lock.unlock()
sleep(6)
dispatch_sync(globalQueueDefault) {() -> Void in
self.lock.lock()
task2()
self.lock.unlock()
}
}
私もNSConditionLock
とobjc_sync_enter
を試してみました。 ..それは動作しません。私はどのように迅速にlock
を使用することができますか?私のコードのベースを教えてください。ありがとうございました。
PS:ここでcallback
を使用したくない...私はそれを試したので、私はマルチスレッドが私の答えにもっと近いと思う、ありがとう。
複数のスレッドはどこですか?タスク1と2は何ですか?シリアルキューを使用していないのはなぜですか? – Wain
申し訳ありませんが、おそらく私は間違った単語 "複数のスレッド"を使用し、 'task1()'はダウンロードjsonであり、 'Task2'は別のビューに渡します。あなたは私の質問と私が欲しいものを理解していると思いますか?自分のコードで 'lock'を使う方法を教えてください。 – user2262304
ロックを使用しないでください。コールバックを使うべきです... – Wain