Wenn, wie Sie in Ihrem Bearbeitungsvorgang gesagt haben, Sie nur gegen einen Absturz absichern möchten, müssen Sie eigentlich nicht viel tun (zumindest im Allgemeinen). Wenn es zu einer Kollision zwischen Threads kommt, ist das Schlimmste, was passieren kann, dass die Daten beschädigt werden - z.B. könnte der Leser einen Wert erhalten, der teilweise aktualisiert wurde und nicht direkt einem Wert entspricht, den der schreibende Thread jemals geschrieben hat. Das klassische Beispiel wäre eine mehrbyte-Zahl, zu der etwas hinzugefügt wurde, und es gab ein Übertragsbit (zum Beispiel) der alte Wert war 0x3f ffff, der inkrementiert wurde. Es ist möglich, dass der Lesethread 0x3f 0000 sieht, wobei die unteren 16 Bits inkrementiert wurden, aber der Übertrag zu den oberen 16 Bits noch nicht stattgefunden hat.
Auf einer modernen Maschine wird ein Inkrement auf so einem kleinen Datenelement normalerweise atomar sein, aber es wird eine Größe (und Ausrichtung) geben, bei der es nicht der Fall ist - typischerweise, wenn ein Teil der Variablen in einer Cache-Zeile ist und ein anderer Teil in einer anderen, wird es nicht mehr atomar sein. Die genaue Größe und Ausrichtung dafür variiert etwas, aber die Grundidee bleibt die gleiche - es kommt im Wesentlichen darauf an, dass die Zahl genug Ziffern hat, damit so etwas passieren kann.
Natürlich könnte etwas wie das, wenn Sie nicht vorsichtig sind, dazu führen, dass Ihr Code sich blockiert oder etwas in dieser Art passiert - ohne zu wissen, wie Sie die Daten verwenden möchten, ist es unmöglich zu erraten, was passieren könnte.