Потокобезопасность всегда требует дополнительной работы, поэтому единственное, что вы можете с уверенностью предположить, это обратное: в отсутствие прямой поддержки потокобезопасность не поддерживается.
Объяснение:
Предположим, у вас есть get
ter для простого 64-битного long long
, и вы работаете на 32-битной архитектуре. Пока компьютер извлекает вторую половину этого длинного 64-битного значения (только что выполненного с первой половиной), другой поток обновляет эту вторую половину, и теперь то, что у вас есть, является несогласованностью - таким образом, это не потокобезопасно.
Изменить (чтобы соответствовать редактированию в вопросе):
(примечание: то, как вы представили свой класс, делает его непригодным для использования, поскольку все члены являются частными)
Если у вас нет никаких методов доступа, которые изменяют состояние вашего класса после его сборки, вы можете использовать потокобезопасность. Но это все еще небрежный наклон, так как позже кто-то, кто не знает о вашем предположении, может добавить set
ter в класс и совершить прекрасное путешествие в опыте отладки случайных ошибок;)
person
YePhIcK
schedule
25.07.2012