【发布时间】:2009-11-08 18:41:52
【问题描述】:
我有两个线程引用同一个变量——UI 线程和一个计时器线程。因此,我已经在两个线程的 lock 语句中包装了对它的访问。定时器线程的访问具有优先级——如果它正在使用变量并且 UI 线程也想要访问,我希望 UI 线程的操作完成,但只有在定时器线程的操作完成之后。
但是,计时器线程可能委托给 UI 线程,因此 UI 线程需要有空闲来处理它。为了适应这种情况,我让 UI 线程启动第三个线程来处理其操作,以便它(第三个线程)可以等待计时器操作完成并且 UI 线程可以使用。锁定发生在第三个线程中。
我应该为这种同步使用什么正确的模式?
【问题讨论】:
-
我们需要更多详细信息以获得不太通用的答案。两个线程都在读取和写入共享变量吗?计时器线程真的有必要在“委托”给 UI 线程时阻塞吗?一般来说,我#d避免引入第三个线程只是为了避免死锁——我宁愿保持复杂性小。
标签: c# synchronization multithreading