int val = memLoc[index++];
Kann ich den folgenden Code lock free/atomic machen?
oder besser noch
int val = memLoc[index++ & 0xFF];
Der Versuch, eine THREAD aus einem gemeinsamen Ringpuffer gelesen zu tun, wo jeder Anruf den nächsten Wert bekommt - und ich würde es lieben Sperre frei zu sein, wenn bei alles möglich, wie es ein TON passiert. No Boost/C++ 11 erlaubt :(
Sie könnten daran interessiert sein, [diesen Artikel] (http://www.codeproject.com/Articles/43510/Lock-Free-Single-Producer-Single-Consumer-Circular) zu lesen. –
Nein C++ 11 bedeutet, dass Sie eine Vor-Standard-Lösung benötigen. Wenn Boost inakzeptabel ist, sind vermutlich alle anderen Bibliotheken (mit ihren strengeren Lizenzbedingungen) ebenfalls aus, so dass Sie nichts Portables bekommen können. Also, auf welchem Betriebssystem brauchst du das? – MSalters
Welcher Typ ist 'memLoc'? Ist es ein Zeiger (oder Array) in "int"? –