한 번에 여러 스레드에서 지역 변수에 액세스하는 방법에 대한 몇 가지 질문 :C#을 가변 스레드 안전
이내가 여러 스레드가 작성하고 변수의 값을 읽고, 나는 그것에 대한 액세스를 동기화 여부를해야합니까?
변수는 Thread1에서 몇 초마다 업데이트되고 스레드 2에서 몇초마다 데이터베이스로 읽혀 업데이트됩니다.
논리를 보유하지 않고 동시성 문제가없는 경우 어떤 문제가 발생할 수 있습니까?
휘발성을 사용해야합니까?
편집 : 나는 내가 어떤 동시성 문제가없는 것을 강조하고 싶습니다
. 내 구체적인 시나리오는 다음과 같습니다.
a. 내 변수 이름은 pingLatency
이고 핑 대기 시간은
b입니다. Thread1은 매 10 초마다 8.8.8.8로 핑을 보내고 대기 시간은 pingLatency
c로 씁니다. Thread2는 일치하는 필드를 pingLatency
값으로 매 10 초마다 갱신합니다.
d. Thread2는 매번 동일한 데이터베이스 행을 업데이트합니다.
이제이 데이터베이스 필드를 사용하여 네트워크 연결을 모니터링합니다. 내 질문은 - 변수가 업데이트되지 않거나 스레드 안전 문제로 인해 예외가 발생하는 상황이있을 수 있습니까? 난 그냥 과도한 것 같아서 lock
사용을 피하고 싶습니다.
당신은 어떻게 생각하십니까?
답변 : 1. 그것은 다릅니다; 2. 그것은 달려있다; 3. 많이; 4 : 아마. 이 문제를 논의하기 위해 기존 질문을 검색하려고 했습니까? 스레드 안전과 관련된 많은 질문이 여기에 있습니다. –
정확히 "지역 변수"란 무엇입니까? 예를 게시하십시오. –
변수 *가 항상 * 로컬 *이므로 * 변수 *가 실제로 * 필드 *를 의미한다고 가정하면 여러 스레드에서 액세스 할 수 없습니다. –