Wie kann ich einen thread-sicheren Listenwrapper in Delphi implementieren?

ch habe einen Listen-Wrapper, der zwei Tstring-Listen und eine TClassList verwalte

Ich brauche dies, um threadsicher zu sein, so dass:

Concurrent-Schreibvorgänge sind nicht zulässig (es sollte ein Wartezustand eingegeben werden)Lesen während des Schreibens (oder umgekehrt) ist nicht erlaubt (es sollte irgendein Wartezustand eingegeben werden)Concurrent liestsin dürfe

Haben Sie eine Idee, wie ich das machen kann? Mein Instinkt sagt mir, dass es mehr als nur einen kritischen Abschnitt braucht, vielleicht ein Semaphor oder "Nutzungszähler", vielleicht einer davon inVerbindun mit einem CS.

Ich bin mir einfach nicht ganz sicher, wo ich anfangen soll - alles von einem umfassenden Ansatz in Englisch über Pseudo-Code bis hin zur Delphi-Implementierung oder einem externen Link wäre sehr willkommen.