如何让线程休眠
1个回答
展开全部
改用SleepEx,alert参数开到TRUE。
需要唤醒的时候用QueueUserAPC给那个线程一个apc(apc函数就算是空的也没关系)即可
追问
就是说,如果只是唤醒,不做任何操作,只需要填写HANDLE参数?其余两个都可以置为NULL?但是有个问题哈,我现在是让主函数所在的那个线程休眠了,如何获得其HANDLE?
回答
不行不行不行,不能NULL。第一个参数你要写一个空的函数给它,就是说函数要有,里面可以只有一个return其他什么也没有。
获取当前线程的handle,你可以调用GetCurrentThread函数,这个函数返回的是一个“伪”HANDLE,再通过DuplicateHandle得到一个“真”HANDLE(这些必须在主线程完成,duplicatehandle的时候就自己进程复制给自己进程,送进入的是伪HANDLE但是拿到的是真HANDLE)。获取到真句柄以后,就可以给其他线程用了。
不复制的话,这个HANDLE对于任何线程都是“自己”,就操作不了主线程了
———————————————分割线——————————————————
满意请采纳(⊙o⊙),以上是软硬谦施团队为你带来的回答。
如果有什么不懂的可以追问,以后有什么问题可以向我提问或者向我的团队提问。(*^__^*) 嘻嘻……
需要唤醒的时候用QueueUserAPC给那个线程一个apc(apc函数就算是空的也没关系)即可
追问
就是说,如果只是唤醒,不做任何操作,只需要填写HANDLE参数?其余两个都可以置为NULL?但是有个问题哈,我现在是让主函数所在的那个线程休眠了,如何获得其HANDLE?
回答
不行不行不行,不能NULL。第一个参数你要写一个空的函数给它,就是说函数要有,里面可以只有一个return其他什么也没有。
获取当前线程的handle,你可以调用GetCurrentThread函数,这个函数返回的是一个“伪”HANDLE,再通过DuplicateHandle得到一个“真”HANDLE(这些必须在主线程完成,duplicatehandle的时候就自己进程复制给自己进程,送进入的是伪HANDLE但是拿到的是真HANDLE)。获取到真句柄以后,就可以给其他线程用了。
不复制的话,这个HANDLE对于任何线程都是“自己”,就操作不了主线程了
———————————————分割线——————————————————
满意请采纳(⊙o⊙),以上是软硬谦施团队为你带来的回答。
如果有什么不懂的可以追问,以后有什么问题可以向我提问或者向我的团队提问。(*^__^*) 嘻嘻……
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询