是多线程的synclock避免死锁

时间:2013-06-07 02:26:17

标签: vb.net multithreading

我有一个多线程程序,我需要避免死锁。有没有什么方法可以避免多线程中的死锁?

先谢谢。

1 个答案:

答案 0 :(得分:2)

避免死锁是一个适当的设计问题。将多线程(或多进程)应用程序混合在一起会遇到麻烦。更糟糕的是,测试并不足以证明缺乏僵局。

您可以采用适合此类事物的编程范例。通信顺序进程(CSP)是专门为避免死锁,竞赛等而发明的。阅读的好页面是维基百科上的JCSP页面。这个想法让人很奇怪地陷入僵局等等,你也可以在数学上证明(如果你有勇气)你的设计没有这些问题。

不幸的是,微软已经很难在Windows中以原生或在.NET中实现CSP程序。我们需要的是一个适用于管道的select(),它在MS域中不存在。我不愿意想想JCSP团队必须跳过什么障碍才能获得他们的等效(用他们的用语替代)。