Noch nicht mal das. CriticalSections können dafür sorgen, dass ein bestimmter Thread solange wartet, bis er dran ist. Sie können auch dazu genutzt werden um festzustellen, ob gerade ein Thread etwas bestimmtes bearbeitet. Aber CriticalSections sind von Grund auf weder von Code noch von Daten abhängig. Man kann sie aber so nutzen:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
|
void Klasse::methode_die_von_mehreren_threads_aufgerufen_wird(void)
{
cs.lock();
//hier kann immer nur einer der aufrufenden threads sein
cs.unlock();
}
|
Somit kann man z.B. das Schreiben einer Variablen absichern, indem man dafür sorgt, dass nur innerhalb dieser Methode geschrieben wird.
EDIT: man kann aber auch locks durchaus über den Code verteile, was unübersichtlich ist, ggf. vielleicht auch notwendig. Dann sicher die CS nicht mehr einen bestimmten Bereich ab, sondern z.B. bestimmte Zugriffe.