2010-12-04 3 views

Antwort

2

Ohne Berücksichtigung des Variablentyps ist es nicht threadsicher. Sie sollten Mutexe/kritische Abschnitte oder atomare Variablen verwenden.

Manchmal ist es nützlich, einen einfachen Code zu schreiben, der Variablen verschiedener Typen zuordnet und sie zerlegt, um zu sehen, wie sie zugewiesen werden.

Auch für eine cas-supporting architecture können Sie Assembler-Code verwenden, um eine atomare Variable zu simulieren.

(Noch ein Tipp: die Variable sollte als volatile wenn in Threads verwendet deklariert werden, die Optimierung von Compiler getan zu verhindern.)

+0

Ok, ich legte einen Mutex-Code (von pthreads) um die globale Variable. Es sollte genug sein, denke ich. Danke für den Tipp [von 'volatile'], ich denke, es sollte für mutexed Variablen üblich sein. –

+0

Nein, Sie müssen nicht flüchtig verwenden, wenn Sie Mutexe verwenden. 'pthread_mutex_lock()' und 'pthread_mutex_unlock()' müssen notwendigerweise als Compilerbarrieren wirken. – caf

2

Nein, es ist genauso unsicher (ein anderer Thread kann diese Variable zur gleichen Zeit benutzen).