最近このWWDC GCDの話が見られました。何か問題があると思います。 DispatchQueuesを使用してプロパティをスレッドセーフにすることについてです。彼らは、プロパティをロックするDispatchQueueを使用GCDを使用してSwift 3のプロパティを同期
class MyObject {
private var internalState: Int
private let internalQueue: DispatchQueue // Serial or Concurrent?
var state: Int {
get {
return internalQueue.sync { internalState }
}
set (newState) {
internalQueue.sync { internalState = newState }
}
}
}
。しかし、のinternalQueueが同時に発生する可能性があるため、このスニペットは有効ではないと思います。したがって、内部キューがシリアルでない場合、2つの異なるDispatchQueues/Threadsからセッターを呼び出すと、スレッドの問題につながる可能性があります。私の理解では、同期は起動しているスレッドを保持していて、タスクが完了すれば続行するからです。このスニペットについてどう思いますか?私が間違っている?
はい、internalQueueを* serial *ディスパッチキューとして定義します。 –