동일한 변수 - UI 스레드와 타이머 스레드를 참조하는 두 개의 스레드가 있습니다. 따라서 두 스레드의 lock 문에서이 스레드에 대한 액세스를 래핑했습니다. 타이머 스레드의 액세스 우선 순위 - 변수를 사용하고 UI 스레드가 또한 액세스하려는 경우 UI 스레드의 작업을 완료 할 수 있지만 타이머 스레드의 작업이 완료된 후에.멀티 스레드 동기화를위한 올바른 패턴? (C#)
그러나 타이머 스레드 은 UI 스레드로 다시 위임 할 수 있으므로 UI 스레드는이를 처리 할 수 있어야합니다. 이를 수용하기 위해 UI 스레드가 세 번째 스레드를 실행하여 해당 작업 (세 번째 스레드)이 타이머 작업이 완료 될 때까지 기다릴 수 있고 UI 스레드를 사용할 수 있도록합니다. 잠금은 세 번째 스레드에서 발생합니다.
이러한 종류의 동기화에 사용해야하는 올바른 패턴은 무엇입니까?
덜 일반적인 답변에 대해서는 세부 정보가 필요합니다. 두 쓰레드가 공유 변수를 읽거나 쓰고 있습니까? UI 스레드에 "위임"하는 동안 실제로 타이머 스레드가 차단해야합니까? 일반적으로 교착 상태를 피하기 위해 제 3 스레드를 사용하지 않기 때문에 복잡성을 줄이려고합니다. – peterchen