6 c++ windows multithreading c++builder
这是我的问题:我必须能够通过串口发送和接收设备.这必须以多线程方式完成.流程如下:
等待设备向我发送一些东西 - 或者如果空闲,则查询状态以查看是否在线与设备
如果设备向我发送了一些内容,则处理消息,确认并告诉设备根据需要执行其他命令
现在,我有一个接收线程和传输线程.接收线程有一个while循环,它通过ReadFile(...)检查串行端口一个字节.如果我有一个字节,那么我开始构建我的缓冲区,然后解析数据以确定发送给我的是什么.
发送线程接受读线程定义的下一个命令,并通过WriteFile将其发送到同一个COM端口.关键是我和设备之间存在接收/发送关系.
我的问题是,我在这里有嵌套的生产者/消费者模型吗?如果我的接收线程正在从设备消耗并且发送线程正在向设备产生,那么线程需要固有地通话才能使它们同步 - 对吗?同步我的工作有效和快速与设备交谈的最佳方法是什么?注意:我使用的是具有TThreads的C++ Builder 5,可以使用关键部分和互斥锁.
编辑:我也在使用轮询,所以我愿意使用WaitCommEvent,如果这会更好!
您认为需要同步的共享资源有哪些?
如果两个线程之间有类似队列的东西,那么这就是一个非常经典的生产者/消费者模型。EG 如果您只有一个线程读取命令,然后将命令放入队列中,而另一个线程从队列中提取命令,处理命令并写入设备,那么您需要使用互斥锁或信号量来同步对队列的访问。
也许我遗漏了一些东西,但是如果您有多个线程从队列中读取并且需要传输的命令需要保持顺序,那么这只会变得复杂。所以尽量保持简单。
| 归档时间: |
|
| 查看次数: |
327 次 |
| 最近记录: |