2011-01-02 3 views
0

Должно ли WaitHandle s и другие объекты синхронизации, которые используются несколькими потоками, объявлены как volatile?Должен ли я объявлять WaitHandle (s) изменчивым?

+2

@Xaqron : не принимайте это неправильно, НО, тот факт, что вы задаете этот вопрос, означает, что вы, вероятно, делаете что-то неправильно ... –

+0

На самом деле у меня есть состояние гонки, которое меня подозревает , Что делать, если поток переходит к 'WaitOne()' другому потоку 'Set()' object? – Xaqron

+0

@ Xaqron: вы когда-нибудь видели пример неустойчивого обработчика событий? –

ответ

2

volatile применим только в том случае, если вы переадресовываете поле.
Для EventHandlers, compiler will handle thread-safety; вы не должны беспокоиться об этом.

Для других объектов синхронизации вы, вероятно, не должны переопределять переменные в первую очередь. (это не то же самое, что мутация)
Использование readonly, а не volatile.

+0

из предыдущего недавнего вопроса, отправленного @Xaqron, у них проблемы с потоками и попытки решить с помощью метода« сосать его и видеть ». –

+0

@Mitch: Это не об этом вопросе (регистраторе) – Xaqron

+0

@Xaqron: NO. но оба вопроса в основном касаются резьбовых соединений и их незнания. –

Смежные вопросы