Müsste genauso gehen, wenn du deine 2. Variante benutzt
Der Semaphore ist hier übrigens im "beginwrite" (murmel herausnehmen) und "endwrite" (murmel zurücklegen) versteckt
Würdest du keine
DLL verwenden, ginge es ganz einfach mit Synchronize (funktioniert auch wie ein Semaphor).