vc新手求助,关于线程

七七猫爱鱼 2012-08-28 03:16:48
做的是串口通信相关东西。简单来说吧,有两个主要类,一个通信类A,一个界面类B。通过串口进行发送和接收的程序都在通信类里面。接收方法是通过线程自动调用,不断接收的。现在我想做超时重发的处理,可是在发送中做了重发处理后程序进入不了接收部分,同学说是因为发送接收在一个类中被占用了所以程序在超时循环的发送中就无法调用接收的线程了。不知道表达清楚了没,请问是这个原因吗,难道要把相关的类都移出去到另一个类中啊,很麻烦啊。。
...全文
44 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
微型蚂蚁 2012-08-28
  • 打赏
  • 举报
回复
我觉得跟类没什么关系,关键是看你等待超时重发的时候有没有阻塞线程或者有没有机会去执行接收操作。

我觉得你可能是用类似于
while(send_finish)
{
send;
Sleep;
}
进行发送的,所以在执行的时候线程没办法跳出去执行别的东西。

最好可以利用EventSelect事件或消息循环等非阻塞的形式,当超时时通知线程处理超时重发,其他的时间就可以去接收了。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧