Nichts in Kommandozeilen-Tool Xcode in der Konsole ausgibt, wenn ich den folgenden Code ausführen:Nichts druckt in der Konsole in Kommandozeilen-Tool Xcode
import Foundation
class A {
var someValue = 0
let concurrentQueue = dispatch_queue_create("queue_for_property", DISPATCH_QUEUE_CONCURRENT)
func increaseValueBy1000() {
dispatch_barrier_async(concurrentQueue) {
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()
Ich sehe keine print-Anweisung in der Konsole . Wenn ich Barrier Linie entfernen funktioniert ganz gut. Was mache ich falsch in diesem Fall, warum meine Barrieren nicht erlauben zu drucken?
Danke, kannst du erklären, in welchem Teil ich es nennen sollte? –
@ wm.p1us: Am Ende Ihres Programms. Siehe auch https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man3/dispatch_main.3.html. –
Danke! Klappt wunderbar! Aber wenn ich die Barriere entferne, habe ich Doppelwerte, aber keine Race Condition. Weil Werte nicht neu geschrieben werden. –