2011-01-02 3 views
0

WaitHandle과 여러 스레드에서 사용하는 다른 동기화 개체를 volatile으로 선언해야합니까?WaitHandle (s)을 휘발성으로 선언해야합니까?

+2

@Xaqron :이 방법을 잘못 사용하지 마십시오.하지만 그 질문을하고 있다는 사실은 당신이 뭔가 잘못하고 있다는 것을 의미합니다 ... –

+0

사실이 문제에 대해 의심하는 경쟁 조건이 있습니다. . 쓰레드가'WaitOne()'으로 갈 때 다른 쓰레드'Set()'가 객체를 처리하면 어떨까요? – Xaqron

+0

@Xaqron : 휘발성 이벤트 핸들러의 예를 본 적이 있습니까? –

답변

2

volatile은 필드를 다시 할당하는 경우에만 해당됩니다.
EventHandler의 경우 compiler will handle thread-safety; 당신은 그것에 대해 걱정하지 않아야합니다.

다른 동기화 개체의 경우, 처음에는 변수를 재 할당하지 않아야합니다. (돌연변이와 같지 않음)
readonly이 아니라 volatile을 사용하십시오.

+0

을 의미했습니다. 그들은 스레드 문제가있어 "suck it and see"메소드를 통해 해결하려고합니다. –

+0

@Mitch :이 질문에 관한 것이 아닙니다. (로거) – Xaqron

+0

@Xaqron : NO. 그러나 두 가지 질문은 본질적으로 스레딩과 그것의 낯선 것에 관한 것입니다. –

관련 문제