一个监测程序!

nuaalj 2003-05-07 10:20:48
用1个线程:采集完数据后显示;
用2个线程:采集线程完成后通知显示线程将数据显示出来,或者采集线程和显示线程同时工作,但对两线程都要用的全局变量使用重要区段(criticalsection)保护。
数据量比较多。
请问,一般用哪种?两种有什么本质区别吗?哪位写过这方面的可否指点指点?
...全文
25 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
snla 2003-05-08
  • 打赏
  • 举报
回复
原贴内容:
谢谢你对我的问题“一个监测程序!”的回复,想再请教一些问题。
1,如果用两个线程的话,要涉及到线程间的协调,采集数据和显示数据是同时进行(利用临界变量将全局变量保护起来)还是利用TEvent事件来协调2线程(比如采集完了再显示)。
2,TEvent具体怎么用,能给出一段比较完整的代码吗?(包括定义一个TEvent对象,使用resetevent、setevent、waitfor等函数的具体使用)
3,另外一位朋友在回答这个问题时提到用多个线程(比如5个)分开进行数据采集,然后用一个显示线程每隔0.5s显示一次,这样有什么优点呢?会不会影响系统的实时性?
谢谢!
\\、、--------------------------
1、 如果你只开一个线程,那么用临界变量就好了,开一个以上的就要用TEvent了。
2、www.yesky.com/20020716/1620634.shtml
3、我前面说过,单CPU的机器,多线程的并不能节省,反而浪费时间,所以没有必要开过多的线程
qibo999 2003-05-07
  • 打赏
  • 举报
回复
楼上的都有道理
zahuifan 2003-05-07
  • 打赏
  • 举报
回复
如果采集完成后才显示,那用不用多线程岂不一样?
要我说应该把采集任务分成5等份,用5个线程同时采集,再用一个线程每间隔0.5秒
就更新显示采集到的数据。
snla 2003-05-07
  • 打赏
  • 举报
回复
用第二种
本质的区别就是线程的数量不一样,论速度,第一个要快,但是如果你的程序有显示界面,会出现“假死机”,就是界面不能动了,所以用第二种办法,显示效果会好,也比较直观,我通常用第二种办法

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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