两个线程冲突??(200分)

  • 主题发起人 主题发起人 求索
  • 开始时间 开始时间

求索

Unregistered / Unconfirmed
GUEST, unregistred user!
程序中,我用了两个线程:TThread1.Execute和TThread1.Execute;
他们各自检测各自的硬件设备状态以供主程序调用 。两个线程都用到了语句 Sleep(5000)和Application.ProcessMessages;可执行程序时就乱了套。
问:是不是线程之间发生了冲突?如何解决?多谢了!!!
 
能不能详细点
 
是同一现成类型的两个实例?
还是TThread2?
 
首先,用sleep(x)不会引起问题,因为在x时间内不需给线程分配cpu时间
请问你的application.processmessage是在哪里用的?详细点
 
是不是两个线程用了对方的资源,如果是,请用线程同步函数或SendMessage.
另,Application.ProcessMessage只是一种在程序执行过程中使其响应键盘、鼠标
消息的过程。其本体是你的程序本身(包含线程),而线程本身并不打扰程序本体的
运行,用Application.ProcessMessage是不是没必要?
ProcessMessagesdo
es not allow the application to go idle, whereas HandleMessagesdo
es。
 
把application.processmessage删掉就不会乱套了。
 
线程里确实没有必要使用什么Application.ProcessMessage,不知你说的乱套是什么.如果是
没同步好可以使用信号量或者设置临界区.
 
1如果是数据库编程,为每个数据库访问配一个session;
2.一般的设计同步很容易了,要注意变量的范围。
 
多人接受答案了。
 
后退
顶部