Ваш код будет в безопасности, если вы защитите доступ к общим переменным с помощью критического раздела (блокировки).
Однако, если переменные правильно выровнены, не храните ссылки и не превышайте размер указателя, тогда вы можете избежать использования блокировки.
Например, если у вас есть целое число, содержащее счетчик, то вам не нужно будет использовать блокировку. Ваш поток писем может безопасно модифицироваться, и поток чтения никогда не пострадает от разрыва. Если у вас было несколько потоков писем, вам, скорее всего, понадобится использовать блокировку или функцию блокировки.
Если ваша переменная является ссылкой, то вам, вероятно, потребуется использовать блокировку. Если у вас есть несколько переменных, которые образуют составную переменную, то снова вам понадобится блокировка.
Важность выравнивания состоит в том, что если переменная смещена, то запись переменной может быть не атомарной. Переменная может быть записана в две части. И поэтому поток чтения может читать переменную в частично обновленном состоянии. Всегда выравнивайте переменные. Если вы воздерживаетесь от упаковки записей и классов, ваши переменные будут выровнены.
В конечном счете, я не могу точно сказать, защищен ли ваш код, потому что вы его не показывали. До сих пор показывается описание кода. Вы действительно должны опубликовать свой код для такого вопроса.
Это действительно зависит от того, какие данные нужно писать и читать. Если есть сомнения: используйте критический раздел. – OnTheFly
Спасибо. Мне нужен был ответ в целом, и для меня достаточно ответа. – Artik