Mit 'offiziell' meine ich die Verwendung von Events und/oder Semaphoren sowie die zugehörigen Synchronisationsaufrufe 'ReleaseSemaphore','Set/ResetEvent', 'WaitForSingleObject' etc.
Das Einzige, was Du vlt. ändern müsstest, ist diese Logik 'Bitte mal kurz stoppen', denn so ein Thread soll ja eigentlich warten (und dabei keine/kaum CPU-Zeit verbraten) bis etwas zu tun ist. Hier wäre es eben notwendig, diese Metapher in 'Hier haste was zu tun' zu ändern.
Wobei ich gerade denke, mit einem Event die gleiche Logik ('Stopp mal kurz') hinzubekommen.
Zum Thema 'threadsicheren Zugriff' gibt es viele Ansätze. Wie viele Threads wollen gleichzeitig lesen (dürfen)? Ist es mehr als einer, dann verwende den TMultipleReadExclusiveWrite-Dingsda aus der SyncObjs-
Unit.
Greift ein Thread vielleicht doch mehrfach auf die Resourcen zu ('Timer'?) Dann reicht eine TCriticalSection nicht.