Нужно ли для потоковой блокировки типов значений (в частности, Boolean)
Я знаю, что не могу использовать блокировку (SyncLock) для типа значения, как описано в этой статье:
http://msdn.microsoft.com/msdnmag/issues/03/01/NET/
Но мой вопрос, значит ли это, что мне не нужно? или мне нужно обернуть логическое значение в объект, чтобы его можно было заблокировать? Если ответ "нет", мне не нужно его блокировать, что происходит, когда два потока пытаются изменить значение одновременно? В приложении, над которым я сейчас работаю, возможно, что два потока могут попытаться установить для него значение true и false одновременно.
1 ответ
Булево, само по себе, не нуждается в блокировке.
Если он меняется у вас под ногами, вы можете получить старое или новое значение, и это нормально.
Обычно, однако, переменная не существует сама по себе. Его ценность связана с ценностью других, и вам нужно защищать всю группу.
Например, у вас может быть список и логическое указание, если оно заполнено. Вам нужен замок, который покрывает их обоих, чтобы сохранить их согласованность.