C、C++线程常用函数

1CreateThread创建线程

HANDLE WINAPICreateThread(

_In_opt_ LPSECURITY_ATTRIBUTESlpThreadAttributes,

_In_ SIZE_T dwStackSize,

_In_ LPTHREAD_START_ROUTINElpStartAddress,

_In_opt_ __drv_aliasesMem LPVOIDlpParameter,

_In_ DWORD dwCreationFlags,

_Out_opt_ LPDWORD lpThreadId

);

返回值

函数成功,返回线程句柄;函数失败返回false。若不想返回线程ID,设置值为NULL。

lpThreadAttributes

指向SECURITY_ATTRIBUTES型态的结构的指针。在Windows 98中忽略该参数。在Windows NT中,NULL使用默认安全性,不可以被子线程继承,否则需要定义一个结构体将它的bInheritHandle成员初始化为TRUE

dwStackSize

设置初始栈的大小,以字节为单位,如果为0,那么默认将使用与调用该函数的线程相同的栈空间大小。任何情况下,Windows根据需要动态延长堆栈的大小。

lpStartAddress

指向线程函数的指针,函数声明:DWORD WINAPI 函数名(LPVOID lpParam)。

lpParameter

向线程函数传递的参数,是一个指向结构的指针,不需传递参数时,为NULL。

dwCreationFlags

线程标志,可取值如下:

(1)CREATE_SUSPENDED(0x00000004):创建一个挂起的线程,

(2)0:表示创建后立即激活。

(3)STACK_SIZE_PARAM_IS_A_RESERVATION(0x00010000):dwStackSize参数指定初始的保留堆栈的大小,否则dwStackSize指定提交的大小。

lpThreadId

保存新线程的id。

2_beginthread创建线程(#include<process.h>

uintptr_t_beginthread(

void(*_StartAddress) (void *),

unsigned _StackSize,

void * _ArgList

);

返回值

假如成功,函数将会返回一个新线程的句柄,用户可以像这样声明一个句柄变量存储返回值:HANDLE hStdOut = _beginthread(CheckKey,0, NULL)。如果失败_beginthread将返回-1。

start_address

新线程的起始地址,指向新线程调用的函数的起始地址。

stack_size

新线程的堆栈大小,可以为0。

arglist

传递给线程的参数列表,无参数时为NULL。

3SuspendThread冻结(挂起)进程

DWORD SuspendThread(

_In_ HANDLEhThread

);

hThread

线程句柄。

4ResumeThread解冻(恢复)进程

DWORDResumeThread(

_In_HANDLE hThread

);

hThread

线程句柄。

5OpenThread打开线程,根据线程ID得到线程句柄

HANDLEOpenThread(

_In_ DWORD dwDesiredAccess,

_In_ BOOL bInheritHandle,

_In_ DWORD dwThreadId

);

dwDesiredAccess

Theaccess to the thread object. This access right is checked against the securitydescriptor for the thread. This parameter can be one or more of thethread access rights.(进程访问权限)

Ifthe caller has enabled the SeDebugPrivilege privilege, the requested access isgranted regardless of the contents of the security descriptor.

bInheritHandle

Ifthis value is TRUE, processes created by this process will inherit the handle.Otherwise, the processes do not inherit this handle.(进程句柄是否可以被继承)

dwThreadId

Theidentifier of the thread to be opened.

返回值

Ifthe function succeeds, the return value is an open handle to the specified thread.

Ifthe function fails, the return value is NULL.

6ExitThread结束线程(内部)

VOIDExitThread(

_In_ DWORD dwExitCode

);

dwExitCode

Theexit code for the thread.

7_endthread结束进程(内部)

void_endthread(void);

8TerminateThread终止线程(外部)

BOOLTerminateThread(

_In_ HANDLE hThread,

_In_ DWORD dwExitCode

);

hThread

Ahandle to the thread to be terminated.

Thehandle must have the THREAD_TERMINATE access right. For more information, seeThread Security and Access Rights.

dwExitCode

Theexit code for the thread. Use the GetExitCodeThread function to retrieve athread‘s exit value.

返回值

Ifthe function succeeds, the return value is nonzero.

Ifthe function fails, the return value is zero.

9GetExitCodeThread获取线程运行状态

BOOLGetExitCodeThread(

_In_ HANDLE hThread,

_Out_ LPDWORD lpExitCode

);

hThread

Handleto the thread.

lpExitCode

Pointerto a 32-bit variable to receive the thread termination status.

返回值

Nonzeroindicates success. Zero indicates failure.

10GetCurrentThread获取当前线程的一个伪句柄

HANDLEGetCurrentThread(

VOID

);

返回值

Long,当前线程的伪句柄。

注解

只要当前线程需要使用一个线程句柄,就可以使用这个伪句柄(但在其他任务线程中都无效)。该句柄可以复制,但不可继承。不必调用CloseHandle函数来关闭这个句柄。

时间: 2024-10-12 10:50:05

C、C++线程常用函数的相关文章

多线程之Linux编程(1)--常用函数

常用函数: 1.创建一个线程用pthread_create()函数.如果成功返回0. int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void * (start_routine)(void*), void *arg); 2.退出方式: a. return返回 b. exit()函数,   函数原型 void exit(int status); c. pthread_exit函数,   函数原型void pthre

PHP常用函数备用

刚学习php的时候,我也为记忆php函数苦恼不已.认为干嘛记忆这么枯燥无味的东西呢?用的时候查一下手册不就行了吗?但是当时因为身在辅导机构,还是记忆了一大堆自己并不感兴趣的函数. 由此就想起来,小的时候背诵的那些古诗词.小的时候并不能理解这古诗词里面的意思.可是随着慢慢的长大,到了一处陌生的城市,每逢节日不能回家和父母团聚的时候,我们就会不由自主的嘀咕起来:独在异乡为异客,每逢佳节倍思亲.当我们与朋友聚会的时候,我们会感叹:今朝有酒今朝醉,莫使金樽空对月.当我们于朋友离别的时候,我们会说:海内存

PHP基本常用函数学习

array_change_key_case — 返回字符串键名全为小写或大写的数组array_chunk — 将一个数组分割成多个array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值array_count_values — 统计数组中所有的值出现的次数array_diff_assoc — 带索引检查计算数组的差集array_diff_key — 使用键名比较计算数组的差集array_diff_uassoc — 用用户提供的回调函数做索引检查来计算数组的差

SQL SERVER系统表和常用函数介绍

sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库 字符集与排序顺序sysconfigures 主数据库 配置选项syscurconfigs 主数据库 当前配置选项sysdatabases 主数据库 服务器中的数据库syslanguages 主数据库 语言syslogins 主数据库 登陆帐号信息sysoledbusers 主数据库 链接服务器登陆信息sysprocesses 主数据库 进程 sysremotelogins主数据库 远程登录帐号syscolumn

Delphi 数据、文件常用函数

一.数据类型转换函数 在我们编写程序当中,根据不同情况,会使用到多种数据类型.当要对不同的类型进行操作时,必须要将不同的类型转换成同样的类型.因此熟练地掌握数据类型的转换是非常重要的. 1.FloatToStr 功能说明:该函数用于将"浮点型"转换成"字符型". 参考实例: Edit1.Text := FloatToStr(1.981); 2.IntToStr 功能说明:该函数用于将"整数型"转换成"字符型". 参考实例: S

Delphi常用函数

Abort                      函数 引起放弃的意外处理 Abs(real)                  函数 绝对值函数 AddExitProc                函数 将一过程添加到运行时库的结束过程表中 Addr(variant)              函数 返回指定对象的地址 AdjustLineBreaks           函数 将给定字符串的行分隔符调整为CR/LF序列 AllocMem                   函数 在堆栈

PHP常用函数,和一些乱起八糟的玩意儿,还挺实用的,善用php内置函数很重要

//权限控制必须文件属主正确 on linux <?php //自己写的一个调试的 class debug {     public function put_String($result)     {         $file = '/usr/share/nginx/html/test/www/debug.html';         $date = date('Y:m:d H:i:s');         file_put_contents($file, '');         if (

VC API常用函数简单例子大全[转]

第一个:FindWindow根据窗口类名或窗口标题名来获得窗口的句柄,该函数返回窗口的句柄 函数的定义:HWND WINAPI FindWindow(LPCSTR lpClassName ,LPCSTR lpWindowName); 第一个参数填窗口的类名,第二个填窗口的标题名,其实是不需要同时填两个参数的,也就是说,你只要知道窗口的类名或窗口的标题就可以了,没有的那个就用NULL代替. 比如现在有一个窗口名为"无标题.txt - 记事本"的记事本程序.那么我就可以用上面的函数获得这个

PHP常用函数【上】

在日常开发中,大多新手就很疑惑,这么多的PHP内置函数怎么记住,其实你只要知道有这个有这个东西就OK了,用的多的时候你自然就记住了,下面收集了PHP开发的时候最常用的函数,希望对你们有帮助. 录了PHP的一些常用函数usleep() 函数延迟代码执行若干微秒.unpack() 函数从二进制字符串对数据进行解包.uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.time_sleep_until() 函数延迟代码执行直到指定的时间.time_nanosleep() 函数延迟代码执行