red*_*man 2 c# multithreading synchronization
我有两个线程引用相同的变量 - UI线程和计时器线程.因此,我在两个线程的锁定语句中包装了对它的访问.定时器线程的访问具有优先级 - 如果它使用变量并且UI线程也想要访问,我希望UI线程的操作完成,但仅在定时器线程的操作完成之后.
但是,计时器线程可以委托回UI线程,因此UI线程需要自由处理.为了适应这种情况,我让UI线程启动第三个线程来处理它的操作,以便它(第三个线程)可以等待定时器操作完成并且UI线程可用.锁定发生在第三个线程中.
我应该使用哪种正确的模式进行这种同步?
一般建议是,关键部分发生的任何事情都应尽可能简单.特别是你应该避免嵌套锁.嵌套锁可能是死锁的来源.
正如您在"计时器"主题中所做的那样,您可能应该将关键部分与处理区分开来.IW在计时器线程中只检索公共变量中的数据,然后执行剩余的处理,包括与锁外部的UI线程的交互.
在混合中添加第三个线程不会让您的生活变得更轻松
| 归档时间: |
|
| 查看次数: |
1553 次 |
| 最近记录: |