多线程3_Kenney_新浪博客

----------------------------------------------------------------------------------------------
获取线程进程与其ID
HANDLE GetCurrentProcess();
HANDLE GetCurrentThread();
DWORD GetCurrentProcessId();
DWORD GetCurrentThreadId();

----------------------------------------------------------------------------------------------
获取线程时间

BOOL GetThreadTimes(HANDLE hThread,PFILETIME pftCreationTime, PFILETIME pftExitTime,PFILETIME pftKernelTime, PFILETIME pftUserTime);
HANDLE hThread: 线程句柄
PFILETIME pftCreationTime: 线程创建的时间
PFILETIME pftExitTime: 线程退出的时间
PFILETIME pftKernelTime: 线程执行操作系统代码已经经过了多少个100ns的CPU时间
PFILETIME pftUserTime: 线程执行应用程序代码已经经过了多少个100ns的CPU时间

----------------------------------------------------------------------------------------------
等待函数

DWORD WaitForSingleObject(HANDLE hObject,DWORD dwMilliseconds);
HANDLE hObject: 标识一个能够支持被通知/未通知的内核对象
DWORD dwMilliseconds: 等待该对象变为已通知状态,它将等待多长时间
等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止。WaitForSingleObject的返回值有 WAIT_TIMEOUT,WAIT_FAILED,WAIT_OBJECT_0


DWORD WaitForMultipleObjects(DWORD dwCount,CONST HANDLE* phObjects,BOOL fWaitAll,DWORD dwMilliseconds);
DWORD dwCount: 想要让函数查看的内核对象的数量
CONST HANDLE* phObjects: 指向内核对象句柄的数组的指针
BOOL fWaitAll: 如果为该参数传递TRUE,那么在所有对象变为已通知状态之前,该函数将不允许调用线程运行
DWORD dwMilliseconds: 等待该对象变为已通知状态,它将等待多长时间
WaitForMultipleObjects与WaitForSingleObject函数很相似,区别在于它允许调用线程同时查看若干个内核对象的已通知状态。
WaitForMultipleObjects的返回值有 WAIT_TIMEOUT,WAIT_FAILED,WAIT_OBJECT_0+0 ... WAIT_OBJECT_0+N

----------------------------------------------------------------------------------------------
事件内核对象

HANDLE CreateEvent(PSECURITY_ATTRIBUTES psa,BOOL fManualReset,BOOL fInitialState,PCTSTR pszName);
PSECURITY_ATTRIBUTES psa: 当psa为NULL表示使用默认安全属性
BOOL fManualReset: 告诉系统是创建一个人工重置的事件(TRUE)还是创建一个自动重置的事件(FALSE)。
BOOL fInitialState: 指明该事件是要初始化为已通知状态(TRUE)还是未通知状态(FALSE)。
PCTSTR pszName: 事件的名称
返回值:当系统创建事件对象后,CreateEvent就将与进程相关的句柄返回给事件对象
当系统创建事件对象后,CreateEvent就将与进程相关的句柄返回给事件对象。其他进程中的线程可以获得对该对象的访问权,方法是使用在pszName参数中传递的相同值,
使用继承性,使用DuplicateHandle函数等来调用CreateEvent,或者调用OpenEvent,在pszName参数中设定一个与调用CreateEvent时设定的名字相匹配的名字

HANDLE OpenEvent(DWORD fdwAccess,BOOL fInherit,PCTSTR pszName);
DWORD fdwAccess:
BOOL fInherit:
PCTSTR pszName:
返回值: 返回事件的句柄
打开事件

BOOL SetEvent(HANDLE hEvent);
当调用SetEvent时,可以将事件改为已通知状态。

BOOL ResetEvent(HANDLE hEvent);
当调用ResetEvent函数时,可以将该事件改为未通知状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值