Schau dir mal in Bezug auf die Events die Klasse
TMultiReadExclusiveWriteSynchronizer an, die macht genau das gesuchte. Eine Instanz bilden und dann alle Lese und Schreibzugriffe mit den entsprechenden Methodenaufrufen säumen (BeginRead/EndRead; BeginWrite/EndWrite)