T
tianzhen
Unregistered / Unconfirmed
GUEST, unregistred user!
1
我在线程中用Application.ProcessMessages;
也不是为了降低CUP,这两种写法
if WaitForSingleObject(h_list2e, INFINITE) <> WAIT_OBJECT_0 then
Application.ProcessMessages;
。。。//功能模块
和
if WaitForSingleObject(h_list2e, INFINITE) = WAIT_OBJECT_0 then
。。。 //功能模块
没区别吧?
另外问一下, if WaitForSingleObject(h_list2e, INFINITE) <> WAIT_OBJECT_0 then
Application.ProcessMessages;
和
while WaitForSingleObject(h_list2e, INFINITE) <> WAIT_OBJECT_0do
Application.ProcessMessages;
有区别吗?
2
读取是永远取list第一行(读后立即删除);
写入是永远写入list最后;这种情况可以不用临界区吧?
程序中list空临界取得更大些,不是1而是100,这样即使有坏读写(不进出临界区),也不会有大碍吧?
用信号方式主要是保证t3持续不断地输出结果,不然轮流resume,别的都suspend也不至于这么麻烦
3
因为list并不需要很精确的控制(比如,list.count小于100左右就算空,大于10000左右就算满),不用临界区也不会有大碍吧?
4
t1,t2,t3用挂起与换醒方式来执行的话,如何能保证t3持续不断地输出结果(客户要求)?
t2一直在判断list1.count吗? WaitForSingleObject不是消息机制吗,有信号才发消息的,所以才比sleep省CPU,是吗?
应该是WaitForSingleObject没信号的话,就=在那里等信号,并不继续结束进程,触发进程。。。吧?
难道应该用while WaitForSingleObject() = WAIT_OBJECT_0do
... ? 代替for结构?
5
t3可以开少些,对程序思路不会有影响吧
我在线程中用Application.ProcessMessages;
也不是为了降低CUP,这两种写法
if WaitForSingleObject(h_list2e, INFINITE) <> WAIT_OBJECT_0 then
Application.ProcessMessages;
。。。//功能模块
和
if WaitForSingleObject(h_list2e, INFINITE) = WAIT_OBJECT_0 then
。。。 //功能模块
没区别吧?
另外问一下, if WaitForSingleObject(h_list2e, INFINITE) <> WAIT_OBJECT_0 then
Application.ProcessMessages;
和
while WaitForSingleObject(h_list2e, INFINITE) <> WAIT_OBJECT_0do
Application.ProcessMessages;
有区别吗?
2
读取是永远取list第一行(读后立即删除);
写入是永远写入list最后;这种情况可以不用临界区吧?
程序中list空临界取得更大些,不是1而是100,这样即使有坏读写(不进出临界区),也不会有大碍吧?
用信号方式主要是保证t3持续不断地输出结果,不然轮流resume,别的都suspend也不至于这么麻烦
3
因为list并不需要很精确的控制(比如,list.count小于100左右就算空,大于10000左右就算满),不用临界区也不会有大碍吧?
4
t1,t2,t3用挂起与换醒方式来执行的话,如何能保证t3持续不断地输出结果(客户要求)?
t2一直在判断list1.count吗? WaitForSingleObject不是消息机制吗,有信号才发消息的,所以才比sleep省CPU,是吗?
应该是WaitForSingleObject没信号的话,就=在那里等信号,并不继续结束进程,触发进程。。。吧?
难道应该用while WaitForSingleObject() = WAIT_OBJECT_0do
... ? 代替for结构?
5
t3可以开少些,对程序思路不会有影响吧