线程死锁了

来源:百度知道 编辑:UC知道 时间:2024/05/19 02:43:48
我在写一个UDP的程序,创建了二个线程,一个用于发送,一个用于接收。他们共用一个socket,出现问题了,不同步的话接收的东西混乱,我用互斥对象同步,在发送和接收的前面等待信号,用完了释放,可是出现死锁了,线程暂停了,怎么办,有什么办法可以避免。
我自己已经有一种方法可以解决了,想听听各位大牛的办法。

死锁的问题主要就是得小心。。。

当然理论上还是有办法可以避免死锁的, 比如, 把所有互斥的资源编号, 持有高序号资源的线程不可以申请低序号资源(比如如果你正占用3好资源,那就不可以申请1,2号。想申请1,2号的话可以先放弃3号资源,申请了1号再申请2号再申请3号) 。 严格按这个规则进行就可以避免死锁。

一个socket怎么能又接收又发送呢?你当然可以向前走一步再向后退一步(不同步),但你前进的同时后退给我看看(同步)。

死锁只要注意了在小程序里就不会出现了,注意资源的申请和释放,建议看看Windows核心编程,这本书里花了大篇幅来讲解线程同步的问题,很不错