Naja, das ist "relativ" einfach.
Du erzeugst ein globales TMultiReadExclusiveWriteSynchronizer - Objekt. Wenn du an eine Stelle kommst, an der sensible Daten geschrieben oder gelesen werden, müssen alle dein Threads die [Begin|End][Read|Write] - Prozeduren des obigen Objektes nutzen. Dadurch geschieht das, was in der Hilfe wie folgt beschrieben wird:
Zitat:
BeginRead muss vor einem Lesezugriff auf den durch TMultiReadExclusiveWriteSynchronizer geschützten Speicher aufgerufen werden. Die Rückkehr von BeginRead erfolgt erst, wenn kein anderer Thread einen Schreibzugriff auf den Speicher ausführt. Nach dem Aufruf von BeginRead können andere Threads weiterhin Lesezugriffe auf den Speicher ausführen. Ein Thread, der durch einen Aufruf der Methode BeginWrite einen Schreibzugriff auf den Speicher anfordert, muss warten, bis alle lesenden Threads EndRead aufgerufen haben.
... usw.
//edit: ach mist ... zu langsam