¿Cómo puedo implementar un contenedor de listas seguro para subprocesos en Delphi?

Tengo un contenedor de listas que mantiene dos Tstringlists y una TClassList

Necesito que esto sea seguro para subprocesos, de modo que:

No se permiten escrituras concurrentes (se debe ingresar un estado de espera de algún tipo)No se permite leer mientras se escribe (o viceversa) (se debe ingresar un estado de espera de algún tipo)Lecturas concurrentesson permitido

¿Alguna idea sobre cómo puedo hacer esto? Mi instinto me dice que necesita más que solo una sección crítica, tal vez un semáforo o "contador de uso", tal vez uno de estos enconjunción con un CS.

Simplemente no estoy seguro de por dónde empezar: cualquier cosa, desde un enfoque general en inglés hasta el código psuedo, la implementación de Delphi o un enlace externo, sería muy apreciado.

Respuestas a la pregunta(3)

Su respuesta a la pregunta