找回密码
 加入
搜索
楼主: zuiyi

[AU3基础] 怎么中断一个sleep

 火.. [复制链接]
发表于 2012-4-23 16:14:26 | 显示全部楼层
回复 11# xms77
和多线程无关,多线程加sleep试试,一样歇菜
发表于 2012-4-25 21:28:36 | 显示全部楼层
for $i=1 to 100
sleeep(100)
next
发表于 2012-4-26 10:23:02 | 显示全部楼层
本帖最后由 happytc 于 2012-4-26 10:24 编辑
和多线程无关,多线程加sleep试试,一样歇菜
netegg 发表于 2012-4-23 16:14


当然有关了,怎么说没有呢?
当是多线程时,我们就可以用另外的线程给这个Sleep线程发信号(SIGALRM,SIGINT),也就是来个软中断,一但收到信号sleep函数就可以中断了。
不过的是:软中断有两种运行模式,一种是在中断模式下,一种是内核线程模式,而一般的都是在中断模式中,中断模式上下文下运行的东西,由于没有自己独立的内核管理,如没有独立的内核栈等,故尔不能sleep后还能产生调度,也就是这样中断后,只是不能恢复它原来执行的状态了,但中断Sleep是没有问题的(若是内核线程模式,还可以恢复它原来的执行状态呢)。还有就是windows不是实时操作系统,可能中断时会产生一定的延时误差,也就是有时把阻塞队列放到就绪队列中去,也不会马上产生调度。但这种误差也是毫秒级的,当然若你把这个中断线程做成内核线程时这种延时基本就可以解决,简单地可以提高中断线程的优先级别,那么在就绪时更可能被调度。


当然au3只有一个主线程,上面说这些都是扯蛋了!
发表于 2012-4-26 10:54:31 | 显示全部楼层
TO楼上,那是APC中的SleepEx.
发表于 2012-4-27 12:14:50 | 显示全部楼层
表示从不使用超过Sleep50的飘过,
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-26 01:32 , Processed in 0.074636 second(s), 13 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表