PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kommunikation zwischen Threads (C++ auf Win32)


Gast
2005-08-26, 13:43:36
Hallo,

ich möchte eine Kommunikation zwischen zwei Threads realisieren, mithilfe einer boolschen Variablen, etwa so:

bool bThreadFlag;
//...

// in Thread 1
//...
// Signal an Thread 2 senden, daß der z.B. beendet werden soll:
bThreadFlag = FALSE;
//...

// in Thread 2
//...
// Abfrage von bThreadFlag
if (bThreadFlag == FALSE)
// Thread beenden
//...

jetzt stellt sich mir die Frage, ob ich die Zugriffe auf bThreadFlag lieber in eine critical section packen sollte, um sicherzugehen, daß Thread 2 nicht aus bThreadFlag liest, während Thread da am reinschreiben ist.
Oder kann man bei 32-bit Datentypen unter Windows sicher sein, daß Schreiboperationen auf jeden Fall abgeschlossen werden, bevor die nächste Operation möglich wird?

Thx for your help.

Demirug
2005-08-26, 13:55:24
Sicher sein kann man sich da nie. Vorallem wenn man es mit Multicore bzw echten Multiprocessor Systemen zu tun hat spielen da ja auch noch die Caches eine Rolle.

Eine Cirtical Section wäre daher schon angebracht. In diesem Fall könnte aber auch die Interlocked... Funktionen ausreichen.