吴昵称 2015-07-23 02:06 采纳率: 20%
浏览 1903
已采纳

求助一个MFC多线程串口通信的问题!!!!

功能简述:通信采用的是modbus协议,该软件是作为从机,即主机给我的软件发送请求命令,我解析命令后,将要请求的数据发给主机。

我的策略:采用一个接收线程和一个发送线程,当接收线程接收到数据后发消息给主线程,主线程在消息响应函数中将接收线程的数据流进行了解析,每次会解析出好多条命令,然后根据每一天命令我开始组织要回复的数据,组织好一条数据后SetEvent,通知发送线程进行发送。

困惑的问题:
1.我的策略是否有问题?
2.我的容器里有好多条主机请求命令,循环取出一条命令后组织回复数据,然后组织好一条数据后SetEvent,通知发送线程进行发送,那如果主线程的时间片没有到,发送线程就不会被调用,那么就会进入下一个循环取命令然后组织回复数据,这个时候就会把上一条要回复的数据给覆盖掉了,怎么办?到底该是一个什么样的处理流程呢?新人困惑求高手解答
3.我没有c币了,不好意思

  • 写回答

4条回答 默认 最新

  • 229614108 2015-07-23 03:02
    关注

    没必要这么多线程吧,COM口的通讯速率和CPU处理速率是没法比的,直接一个进程接收然后处理发送。
    数据量实在是太大的话就这样处理,开启一条垃圾处理线程,用来处理已经结束线程的资源,接收线程接收到的数据new一块内存保存,
    然后在接收进程里面执行 beginthreadex开启一条线程,线程参数是
    new的那块地址,线程执行完后记得delete就可以了,记得把线程句柄保存交给垃圾处理线程。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试