単純な競合状態を作り、それを解決するためにdispatch_barrierを使用したい。速やかに競合状態をするのが正しいのですか?
私はYouTubeのビデオで見たように値が通常はもう少し1000程度だから、それは躊躇しています。
class A {
var someValue = 0
func increaseValueBy1000() {
for _ in 0..<1000 {
let v = self.someValue + 1
print(v)
self.someValue = v
}
}
}
let instance1 = A()
dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0)) {
instance1.increaseValueBy1000()
}
instance1.increaseValueBy1000()
正しい競合条件の例ですか?ここで
私は 'print(v)'をループから削除します。誰が知っている、何が印刷されている場合は? – werediver
しかし、vの値が間違っているかどうかはどうやって分かりますか? –
@ wm.p1us代わりにNSLogを使用してください – user3441734