Synchronisierung Kategorie: Programmierung (von Christian Jost - 26.10.2005 10:37) | ||
| ||
Hallo, Ich hätte ein paar Fragen zur Synchronisierung: 1) Ich habe 4 Worker-Threads. Sobald einer fertig ist, soll dieser ein globales Flag setzen: int ready; ... ready = TRUE; Ein anderer Thread führt folgendes aus: loop { wait ready; ready = FALSE; ... } Kann die virtuelle Maschine durcheinander geraten (=Absturz), wenn zwei Threads "gleichzeitig" versuchen auf dieselbe Variable zuzugreifen? Es spielt keine rolle ob das Flag mehrmals gesetzt wird oder von wem es gesetzt wird. Es ist einfach wichtig dass es gesetzt wird. Ich möchte für diesen Fall kein capture/release benutzen um die Programmausführung nicht durch Wartezustände zu verlangsamen. 2) wenn ich durch run 255 die Priorität erhöhe, so wirkt sich das sofort aus oder erst nach dem nächsten Thread-Wechsel? Ich denke da an folgende Anwendung für einen Ringbuffer: run 255; capture sema; bufCount = (bufCount + 1); release; resume; Ziel ist auch hier wieder möglichst wenig zu blockieren. 3) In diesem Eintrag: 11080 hat André H. geschrieben, dass andere Threads immer lesend auf Variablen zugreifen dürfen (ohne capture) wenn sie nur von einem Thread verändert werden. Gilt das auch für long, float und string oder nur für byte/int? Besten Dank für eure Hilfe. Gruss, Chris | ||
Antwort schreiben Antworten: Re: Synchronisierung (von André H. - 30.10.2005 18:00) Re: Synchronisierung (von KlaRa - 26.10.2005 13:37) Re: Synchronisierung (von Christian Jost - 28.10.2005 20:01) |