windows 常用thread方法

故事扮演 提交于 2020-03-23 02:09:28

3 月,跳不动了?>>>

1.HANDLE CreateThread(
_In_opt_LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_SIZE_T dwStackSize,
_In_LPTHREAD_START_ROUTINE lpStartAddress,
_In_opt___drv_aliasesMemLPVOID lpParameter,
_In_DWORD dwCreationFlags,
_Out_opt_LPDWORD lpThreadId
);
参数说明
lpThreadAttributes:指向SECURITY_ATTRIBUTES型态的结构的指针。在Windows 98中忽略该参数。在Windows NT中,NULL使用默认安全性,不可以被子线程继承,否则需要定义一个结构体将它的bInheritHandle成员初始化为TRUE
dwStackSize,设置初始栈的大小,以字节为单位,如果为0,那么默认将使用与调用该函数的线程相同的栈空间大小。任何情况下,Windows根据需要动态延长堆栈的大小。
lpStartAddress,指向线程函数的指针.
lpParameter:向线程函数传递的参数,是一个指向结构的指针,不需传递参数时,为NULL。
dwCreationFlags :线程标志,可取值如下
(1)CREATE_SUSPENDED(0x00000004):创建一个挂起的线程,
(2)0:表示创建后立即激活。

 


2.VOID ExitThread(DWORD dwExitCode);


正常结束一个线程的执行
参数说明:
dwExitCode:指定调用线程的退出代


3.BOOL TerminateThread( HANDLE hThread,DWORD dwExitCode);


强制终止一个线程的执行
参数说明:
hThread:被终止的线程的句柄
dwExitCode:线程退出时的退出码


4.DWORD ResumeThread(HANDLE hThread)


恢复一个线程
参数说明:
hThread: 线程句柄
5.DWORD SuspendThread(HANDLE hThread);


挂起一个线程
参数说明:
hThread:线程句柄


6


GetExiCodeThread()


得到一个已经终止线程的退出码


7.BOOL SetThreadPriority(
    __in HANDLE hThread,
    __in int nPriority
    );
hThread是线程的句柄。
nPriority是线程的优先级。


8.int GetThreadPriority(
__in HANDLE hThread
)


得到一个线程的优先级

 


9.BOOL CloseHandle(HANDLE hThread)


关闭一个线程的句柄

 


10.BOOL PostThreadMessage(
DWORDidThread,
UINTMsg,
WPARAMwParam,
LPARAMIParam
);
发送一条消息给指定的线程
参数说明:
idThread:其消息将被寄送的线程的线程标识符。如果线程没有消息队列,此函数将失败。当线程第一次调用一个Win 32 USER或GDI函数时,系统创建线程的消息队列。要得到更多的信息,参见备注。
Msg:指定将被寄送的消息的类型。
wParam:指定附加的消息特定信息。
IParam:指定附加的消息特定信息。
注意:PostThreadMessage有时会失败,报1444错误(Invalid thread identifier. ) 其实这不一定是线程不存在的原因,也有可能是线程不存在消息队列(message queue)造成的。


11.int GetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax);
lpMsg:指向MSG结构的指针,该结构从线程的消息队列里接收消息信息。
hWnd:取得其消息的窗口的句柄。当其值取NULL时,GetMessage为任何属于调用线程的窗口检索消息,线程消息通过PostThreadMessage寄送给调用线程。
wMsgFilterMin:指定被检索的最小消息值的整数。
wMsgFilterMax:指定被检索的最大消息值的整数。
返回值:如果函数取得WM_QUIT之外的其他消息,返回非零值。如果函数取得WM_QUIT消息,返回值是零。如果出现了错误,返回值是-1。例如,当hWnd是无效的窗口句柄或lpMsg是无效的指针时。若想获得更多的错误信息,请调用GetLastError函数。
12.HANDLE GetCurrentThread()


得到当前的线程的伪句柄,表示只在调用的线程中使用有效。


13.DWORD GetCurrentThreadId()
获取当前线程一个唯一的线程标识符


14.DWORD GetThreadId(HANDLE hThread)


得到指定线程的ID


15.DWORD WaitForSingleObject(


HANDLE hHandle,
DWORD dwMilliseconds
)


等待单个对象


16.DWORD WaitForMultipleObject(DWORD dwCount , CONST HANDLE* phObject, BOOL fWaitAll, DWORD dwMillisecinds);


等待多个对象
参数说明:
dwCount : 表示等待对象个数
phObject: 表示指向对象句柄的数组指针
fWaitAll: 是否等待所有的对象(ture)
dwMillisecinds: 最长等待时间,INFINITE表示死等。
 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!