Synchronisation von Threads will nicht klappen
-
jaja, immer diese anti-open-source-programmierer
beste für deine Situtation natürlich Critical Sections!
-
ne ich find meinen code nur so peinlich
-
trau dich...keiner wird lachen und keiner wird dir irgendeine idee klauen. wir wollen dir nur helfen die beiden fehler zu berichtigen!
-
So, das mit den mehrfach definierten symbolen hab ich gelöst, ein kleiner leichtsinnsfehler.
Könnte mir bitte einer ein kleines beispiel schreiben. Wäre super
-
Mann muss nicht nur für Schreibzugriffe sperren, sondern auch für Lesezugriffe.
Warum?
Wenn 8 Threads von einer Variable lesen, dann bekommen doch alle das gleiche, also warum sperren?
Sperren muss man, sobald ein Thread Schreibzugriff hat!
-
Komisch, beim Lesen einer Variable, die auf einen gültigen Zeiger zeigt kommt nur Schmarrn raus. Wenn ich aber die Variable im Hauptthread auslese kommt das richtige raus. kann das noch einen anderen grund haben.
Und noch was. Ist es richtig so zu synchronisieren.
CRITICAL_SECTION sc
InitalializeCriticalSection(&cs);
Im neuen Thread:
EnterCriticalSection(&cs);
//Variablenzugriff
LeaveCriticalSection(&cs);am ende des programms:
DeleteCriticalSection(&cs);Is das so richtig
-
Sagt mir nur ob das richtig ist, dann hör ich auf zu nerven
-
...bitte...
-
ja, richtig
P.S. Beispiel, wenn man mal 10 Sekunden in die MSDN schauen würde:
// Global variable CRITICAL_SECTION CriticalSection; void main() { ... // Initialize the critical section one time only. InitializeCriticalSection(&CriticalSection); ... // Release resources used by the critical section object. DeleteCriticalSection(&CriticalSection) } DWORD WINAPI ThreadProc( LPVOID lpParameter ) { ... // Request ownership of the critical section. __try { EnterCriticalSection(&CriticalSection); // Access the shared resource. } __finally { // Release ownership of the critical section. LeaveCriticalSection(&CriticalSection); } ... }
[ Dieser Beitrag wurde am 29.10.2002 um 08:57 Uhr von RenéG editiert. ]
-
Danke, ich habe es ja eigentlich so gemahct.