在delphi 中主线程使用sleep(1000)函数后,后面的一条语句没有执行,这是为什么呀,delphi Fmx 线程同步

文章 2年前 (2021) admin
0

Q1:在delphi 中主线程使用sleep(1000)函数后,后面的一条语句没有执行,这是为什么呀

后面一条语句是没有执行还是要等很久之后再执行?

Q2:delphi中延时函数的问题

首先,程序死掉是表面的,应该程序主线程在循环里执行你的Sleep操作,不会响应你的其他窗口事件了。要想不死,你可以使用多线程来sleep,这样主线程不至于在执行你的sleep而停止响应其他事件;delay函数delphi里没有吧,一般是我们自己来写的,主要用到的是GetTickCount()来实现,这个函数相比sleep,他可以在死的状态下通过Application.ProcessMessages来告诉窗口这时要响应其他消息了,而不至让窗口一直在死,你移动窗口,或关闭窗口,点击按钮等操作都不会受影响procere Delay(MSecs: Longint);//延时函数,MSecs单位为毫秒(千分之1秒)varFirstTickCount, Now: Longint;beginFirstTickCount := GetTickCount();repeatApplication.ProcessMessages;Now := GetTickCount();until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount);end;

Q3:我在delphi程式中使用Sleep(1),但是程序在运行时有时系统停止1S,有时却停止十几秒,怎麼避免程序停止十几

Sleep(1)表示1毫秒,而不是1秒。即使是sleep(1000),也不能保证只停1s,因为程序也会受到其他操作的影响,单独使用线程来计时可能更准确。

Q4:delphi 延时函数(或过程)

procere delay(second:Integer);var initialTime:Cardinal;begin initialTime:=GetTickCount; while GetTickCount - initialTime < second *1000 doend;

Q5:在多线程环境中使用Sleep函数会有什么有关问题

1:线程相关性来讲,没什么问题,sleep函数不是线程相关的,不存在共享资源的问题2:多线程中sleep,主要考虑sleep的cpu占用问题,在sleep的时候,如果该线程占有其他线程资源(例如需要线程同步),那其他线程也会被卡主,这点是在设计过程中需要注意的3:一般情况下,sleep函数可以放心在多线程中使用,如果实在不放心,可以用定时器替换

Q6:createthread创建多线程在使用其中使用sleep()导致部分线程休眠问题?

1毫秒不要睡觉。操作系统的最小睡眠响应时间约为50ms。将睡眠时间改为100分钟即可看到这一现象。

相关文章