Schau Dir doch mal eine
Threadpool-Klasse an, die ist genau dafür gedacht. Du definierst nur noch die Jobs, die im Hintergrund abzuarbeiten sind. Den Rest erledigt die Klasse.
Ich würde prinzipiell sowohl Getter und Setter mit Critical Sections schützen, auch die Operation an sich scheinbar unteilbar ist. Wer weiss, was zukünftige CPU's so bringen? Wer sagt mir denn, das die nächste CPU-Generation nicht in der Lage ist, einen 32bit-Wert parallel zu beschreiben bzw. zu lesen? Diese Schutzblöcke zeigen zudem direkt an, das das Objekt auch für den multithreaded-Betrieb ausgelegt ist (Stichwort: Selbsterklärender Code).