线程基础
来源:互联网 发布:keba控制器编程手册 编辑:程序博客网 时间:2024/05/21 17:11
1、线程由两部分组成:
1)、线程的内核对象,操作系统用它管理线程。系统还用内核对象来存放线程统计信息的地方。
2)、一个线程栈,用于维护线程执行时所需的所有函数参数和局部变量。
2、CreateThread函数是创建线程的Windows函数。不过,如果写的是C/C++代码,就绝对不要调用CreateThread。
可以调用_beginthreadex函数。至于原因,后面再说。
3、线程创建
HANDLE CreateThread(
PSECURITY_ATTRIBUTES psa,//-------------------内核对象安全属性,一般为NULL
DWORD cbStackSize,//--------------------------指定线程栈大小,传入0,则编译器设定
PTHREAD_START_ROUTINE pfnStartAddr,//---------新线程执行的线程函数地址
PVOID pvParam,//------------------------------传参给线程函数
DWORD dwCreateFlags,//------------------------线程创建标志,是否立刻执行
PDWORD pdwThreadID//--------------------------存储新线程id,可为NULL
);
4、线程终止
1)、线程函数返回:所有清理工作都被执行
2)、ExitThread终止线程,并导致操作系统清理所使用的所有操作系统资源,但是C/C++类对象不会销毁。
3)、TerminateThread函数是异步的,不能保证线程是否已经销毁。
5、使用CreateThread,如果线程使用了C/C++运行库的signal函数,则整处进程都会终止,因为结构化异常处理
帧没有就绪。假如线程不是通过调用_endthreadex来终止的,数据块就不能被销毁,从而导致内存泄漏。
6、GetProcessTimes查询所在进程的使用时间。
7、GetCurrentThread返回的是伪句柄,DuplicateHandle函数可以把伪句柄变为真正的句柄
1)、线程的内核对象,操作系统用它管理线程。系统还用内核对象来存放线程统计信息的地方。
2)、一个线程栈,用于维护线程执行时所需的所有函数参数和局部变量。
2、CreateThread函数是创建线程的Windows函数。不过,如果写的是C/C++代码,就绝对不要调用CreateThread。
可以调用_beginthreadex函数。至于原因,后面再说。
3、线程创建
HANDLE CreateThread(
PSECURITY_ATTRIBUTES psa,//-------------------内核对象安全属性,一般为NULL
DWORD cbStackSize,//--------------------------指定线程栈大小,传入0,则编译器设定
PTHREAD_START_ROUTINE pfnStartAddr,//---------新线程执行的线程函数地址
PVOID pvParam,//------------------------------传参给线程函数
DWORD dwCreateFlags,//------------------------线程创建标志,是否立刻执行
PDWORD pdwThreadID//--------------------------存储新线程id,可为NULL
);
4、线程终止
1)、线程函数返回:所有清理工作都被执行
2)、ExitThread终止线程,并导致操作系统清理所使用的所有操作系统资源,但是C/C++类对象不会销毁。
3)、TerminateThread函数是异步的,不能保证线程是否已经销毁。
5、使用CreateThread,如果线程使用了C/C++运行库的signal函数,则整处进程都会终止,因为结构化异常处理
帧没有就绪。假如线程不是通过调用_endthreadex来终止的,数据块就不能被销毁,从而导致内存泄漏。
6、GetProcessTimes查询所在进程的使用时间。
7、GetCurrentThread返回的是伪句柄,DuplicateHandle函数可以把伪句柄变为真正的句柄
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- 线程基础
- android系统属性设置(通过代码设置和手动设置)
- 应苹果要求 Facebook Camera更名为Camera·
- C#快速注释
- 汇编学习--6.13--基础知识
- IOS开发之查看网络链接是否可用-----第一讲
- 线程基础
- Ant build.xml中的各种变量
- 修改 Android 系统默认语言版本
- jdom解析xml
- java实现在线支付
- aod.net
- 回顾与展望:app那些事儿
- 【工具教程】Aptana Studio3教程
- 对于权限设计的思路