用QueueUserAPC()函数来强制线程退出等待状态

用QueueUserAPC()函数来强制线程退出等待状态

2023年6月22日发(作者:)

⽤QueueUserAPC()函数来强制线程退出等待状态 当系统创建⼀个线程的时候,会同时创建⼀个与线程相关的队列。这个队列被成为异步过程调⽤(APC)队列。同时我们也知道,windows提供了6个函数可以等待并将线程设置为可提醒状态---------

SleepEx(),WaitForSingleObjectEx(),WaitForMultipleObjectsEx(),SignalObjectAndWait(),GetQueuedCompletionStatusEx(),MsgWaitForMultipleObjectsEx()当我们调⽤这6个函数之⼀并将线程设置为可提醒状态的时候,系统会⾸先检查线程的APC队列。如果队列中⾄少有⼀项,那么系统不会让线程进⼊睡眠状态。需要牢记:当带调⽤这些函数的时候,只要线程的APC队列中⾄少有⼀项,线程就不会进⼊睡眠状态。这个6个函数的返回值也是很重要的:如果是WAIT_IO_COMPLETION,那么我们就知道线程得以运⾏的原因是线程⾄少处理了APC中的⼀项。windows提供了⼀个函数,允许我们⼿动的添加⼀项到指定线程的APC队列中:DWORD WINAPI QueueUserAPC(

__in PAPCFUNC , __in HANDLE ,

__in ULONG_PTR)⽤这个函数,我们可以强制让线程退出等待状态,看代码:// QueueUserAPC退出线程.cpp : 定义控制台应⽤程序的⼊⼝点。//#include "stdafx.h"#include #include #include using namespace std;VOID WINAPI APCFunc(ULONG_PTR dwParam){ //do nothing cout<<"APC函数"<

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687426044a9160.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信