两个通讯线程的问题(30分)

  • 主题发起人 主题发起人 天空4567
  • 开始时间 开始时间

天空4567

Unregistered / Unconfirmed
GUEST, unregistred user!
有两个线程:一个用于监控,一个用于检测。在监控线程里,读串口数据,计算后分析判断数据。当该数据满足检测条件时,触发检测线程的执行,并在检测线程启动后立即终止并撤消监控线程。
想问:该在启动检测线程,还是先终止和撤消监控线程?为什么?
 
也不用想得太复杂了:
1,检查线程运行时如果满足条件就给主程序发送消息,并且定义变量,发送之后变量为真,就不用继续发送消息
2,主程序收到消息后关闭检查线程
3,启动检测线程,
 
TO dey-999,:
谢谢你。你的意思我明白了,但是,我对消息机制不熟悉。
我是在监控线程里调用“检测条件的判断过程”,如果满足,则在该过程里直接启动检测线程,并立即关闭监控线程。这样做不合适?会引起系统资源争用?
 
我是在监控线程里调用“检测条件的判断过程”,如果满足,则在该过程里直接启动检测线程,并立即关闭监控线程。这样做不合适?会引起系统资源争用?

监控线程的执行过程
if 检测条件的判断过程 then begin
检测线程.唤醒;
监控线程.暂停
end;

检测线程的执行过程
if 获取数据 then begin
检测线程.暂停;
监控线程.唤醒;
end;
这样即可:) 实际有更好的处理办法

监控线程发现数据后读取并且写入一个数据队列
检测线程定时循环检查数据队列有数据就处理
2个线程并行工作互不影响也互不干扰
 
TO mmzmagic:
谢谢你。你的思路非常好。(`_`)
监控线程的执行过程:
if 检测条件的判断过程 then begin
检测线程.Resume;
监控线程..Suspend;
end;
那么,检测线程.Resume后监控线程..Suspend;这样不会出现死机或者等待、争用等现象吧?
 
2个线程同时只有一个在执行当然就不会出现你所担心的现象拉:)
不过要注意状态控制:) 比如程序启动时那个线程是暂停的。结束时要结束的线程不能处于Suspend状态 等等
 
TO mmzmagic:
谢谢。
1、不能结束一个Suspend状态的线程?
2、我的检测线程启动时,监控现成就完成使命而终止撤消(可以撤消一个Suspend状态的线程吧?)
3、Suspend与Resume不成对?
4、在监控线程里判断到满足检测线程的条件时,如果此时先终止监控线程,再启动检测线程,会怎样?(这个问题 可能很幼稚吧?~_~)
 
很简单。在结束监控前启动检测线程。其启动和结束的条件依mmzmagic的观点。他说得对。
 
多人接受答案了。
 
后退
顶部