the lock statement을 사용하면 다른 스레드가 중요한 섹션에있는 동안 한 스레드가 중요한 코드 섹션에 들어가지 않도록 할 수 있습니다. 다른 스레드가 잠긴 코드를 입력하려고하면 개체가 해제 될 때까지 블록을 기다립니다 . "lock 문과 같이 상호 배타를 어떻게 달성 할 수 있습니까? 블록이 잠겨 있으면 건너 뛸 수 있습니까?
원하는 동작이 다른 스레드가 잠긴 코드를 입력하려고하면 잠금을 해제 할 때까지 기다리지 않고 전체 코드를 건너 뛸 것입니다. 내 마음에 와서 생각은
if(flag) return;
flag = true;
//do stuff here
flag =false;
처럼 뭔가를 플래그를 사용하지만, 사람이 참으로 설정하기 전에 두 스레드가 첫 번째 라인을 통과 할 수 있기 때문에 나는이 안전하지 않습니다 알고, 또는 플래그는 false로 설정 적이되고 예외가있는 경우 .. 개선안이나 대안을 제안 할 수 있습니까?
왜 제 시간에 거의 타임 아웃을 사용하고 싶습니까? 왜 제로가 아닌가? –
@ 루이스 : 0의 시간 간격을 사용할 수 있습니다 (또는 같은 시간대에 'TimeSpan'을 사용하지 않는 다른 오버로드를 사용할 수 있습니다).포기하기 전에 최소한의 시간 동안 리소스를 기다리는 것이 일반적입니다. 당신이 원하지 않는다면, 당신은 필요가 없습니다. :) – Ani