Threads und Zugriff ohne sync
-
Ich habe eine Ringbuffer Klasse nach dem klassischen Consumer/Producer Prinzip geschreiben. Soweit OK.
Da Consumer und Producer oder pRead und pWrite in zwei unterschiedlichen Thread agieren muß ich einige Variablen synchronisieren. Auch OK.Allerdings:
Beispiel eine Funktion zum weiterschieben der Lesemarke.void moveReadMark(int n) { if(pWrite > pReadMark) { int s = (pWrite - pReadMark); if(n > s) { pReadMark+= s } ... } }Es stört nicht wenn pWrite bei if und bei der Berechnung unterschiedliche sind. Das ist nicht das Problem.
Wäre aber ein Threadwechsel bei if(pWrite > pReadMark) überhaupt möglich.
Also so, das nur ein Teil der Addresse auf die pW zeigt ausgelesen wird und nachher Müll raus kommt? Oder komme ich tatsächlich ohne sync aus?