串口接收线程退出与优先级问题
2014-05-29 15:42
435 查看
原文地址::/article/2577003.html
相关网帖
1、 wince下比较好用的串口接收线程 ----http://blog.chinaunix.net/uid-20620069-id-1913574.html
2、
在EVC4调试模式下,调试串口时出现一个问题:串口有一个接收线程,在应用退出时,总是不能正常退出。
分析原因:从现象上来看,是线程因为调用WaitCommEvent()进入等待状态后,应用在退出时调用TerminateThread(),因为线程已经被Suspend而不能退出。
通过Remote Process Viewer查看应用,发现应用的两个线程的优先级不同。主应用线程的优先级是250,而接收线程的优先级是251。接收线程的优先级大于主应用线程的优先级,此可能是引起线程不能退出的原因。
但此接收线程的优先级为何会高于主应用线程的优先级?在程序没有设置优先级的情况下,接收线程的优先级应该等于主应用线程的优先级。
试验:在应用中调用优先设置函数,将线程的优先级设置为低于主应用线程的优先级。但线程的优先级会自动变化到高于主应用线程的优先级!原因不明!!!
但在另一个开发板上,应用和线程都可以正常退出。分析两板的不同,发现出现问题的板子串口虽然可以正常打开,但始终接收不到信息。
有同事说,会不会是串口线程因为等待不到信息,而继承了串口驱动的优先级。这种说法没有什么依据。
原因不明!!!
//========================================================================================
备注::
1》建议不用TerminateThread,而是通过指定SetCommMask函数第二个参数为NULL来让WaitCommEvent退出等待状态,这样线程就可以很好响应退出事件。
2》线程的安全退出最好使用这种方法----线程函数返回
3》可以去等待一个线程的句柄的有无状态来决定一个线程是否真的退出
相关网帖
1、 wince下比较好用的串口接收线程 ----http://blog.chinaunix.net/uid-20620069-id-1913574.html
2、
VC下线程安全退出的方法----百度文章----/article/1724770.html
在EVC4调试模式下,调试串口时出现一个问题:串口有一个接收线程,在应用退出时,总是不能正常退出。分析原因:从现象上来看,是线程因为调用WaitCommEvent()进入等待状态后,应用在退出时调用TerminateThread(),因为线程已经被Suspend而不能退出。
通过Remote Process Viewer查看应用,发现应用的两个线程的优先级不同。主应用线程的优先级是250,而接收线程的优先级是251。接收线程的优先级大于主应用线程的优先级,此可能是引起线程不能退出的原因。
但此接收线程的优先级为何会高于主应用线程的优先级?在程序没有设置优先级的情况下,接收线程的优先级应该等于主应用线程的优先级。
试验:在应用中调用优先设置函数,将线程的优先级设置为低于主应用线程的优先级。但线程的优先级会自动变化到高于主应用线程的优先级!原因不明!!!
但在另一个开发板上,应用和线程都可以正常退出。分析两板的不同,发现出现问题的板子串口虽然可以正常打开,但始终接收不到信息。
有同事说,会不会是串口线程因为等待不到信息,而继承了串口驱动的优先级。这种说法没有什么依据。
原因不明!!!
//========================================================================================
备注::
1》建议不用TerminateThread,而是通过指定SetCommMask函数第二个参数为NULL来让WaitCommEvent退出等待状态,这样线程就可以很好响应退出事件。
2》线程的安全退出最好使用这种方法----线程函数返回
3》可以去等待一个线程的句柄的有无状态来决定一个线程是否真的退出
相关文章推荐
- 串口接收线程退出与优先级问题
- 串口接收线程退出与优先级问题
- 循环线程退出问题二
- 两个线程,一音/一视频udp数据包,优先级问题,在线等!
- Activity中开辟了线程更新UI,线程未结束,退出了Activity,导致问题
- 串口接收时丢数据问题解决方案
- Java线程优先级和线程暂停恢复的问题
- J2ME中线程的优先级问题
- Linux 多线程 线程中段退出 互斥量解锁问题
- linux socket编程中出现发送或接收错误时退出程序问题
- java 线程退出问题(interrupt()与中断标志)
- 黑马程序员 关于c# windows窗体关闭时线程未能完全退出问题(专题一)
- 串口接收时丢数据问题解决方案
- outlook2007 接收邮件自动退出的问题
- 串口接收数据及时返回问题(电能表测试的上位机应用程序)
- 解决“串口接收数据时被截断”的问题
- 关于循环线程的正常退出问题。
- 串口接收时丢数据问题解决方案
- 线程问题的核心: 怎么退出线程才是合适的----小话多线程(2)
- wince下比较好用的串口接收线程