Einzelnen Beitrag anzeigen

Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#5

AW: Frage zu Critical Section bei Array Zugriff

  Alt 21. Feb 2014, 11:38
Man muss die Teilstücke ja auch nicht starr einem Thread zuordnen, sondern kann einen Worker-Pool nutzen. Der enhält so viele Worker, wie es Prozessoren gibt.
Zu den Teilbereiche werden die angrenzenden Punkte mitgespeichert (sog. Geisterpunkte). Es sollte mehr Teilstücke geben als Worker.

Der Hauptthread macht nun folgendes:
  1. die Teilstücke initialisieren
  2. alle Teilstücke in Auftrag geben
  3. blockieren, bis alle Teilstücke berechnet wurden
  4. die Geisterpunkte aktualisieren
  5. Abbruchkriterium prüfen, wenn nicht erfüllt: gehe zu 2.
Ein schöner Nebeneffekt ist, dass du nach Schritt 4. auch mal einen Zwischenstand speichern kannst.

Eine andere Sache: Wenn du weder Synchronisationsmittel nutzt, noch dich selbst darum kümmerst, können "merkwürdige" Sachen mit den Caches passieren. In den meisten Varianten sollte die Implementierung des Workerpool mit klassischen Synchronisationsmitteln schon ausreichen, um solche Effekte zu vermeiden.
  Mit Zitat antworten Zitat