线程创建
来源:互联网 发布:wechat.class.php实例 编辑:程序博客网 时间:2024/06/04 01:05
CreateThread(SEC_ATTRS SecurityAttributes,
ULONG StackSize,
SEC_THREAD_START StartFunction,
PVOID ThreadParameter,
ULONG CreationFlags,
PULONG ThreadId)
SecurityAttributes:指向一个SEC_ATTRS结构的指针,决定返回的句柄是否可以被子进程继承
StackSize:设置初始栈的大小,以字节为单位,如果为0,那么默认将使用与调用该函数的线程相同的栈空间大小。任何情况下,Windows根据需要动态延长堆栈的大小。
StartFunction:指向线程函数的指针,但这个线程函数的格式有限定,必须是 DWORD WINAPI 函数名 (LPVOID lpParam) ,格式不正确将无法调用成功。
ThreadParameter:向线程函数传递的参数,是一个指向结构的指针,不需传递参数时,为NULL
CreationFlags:线程标志,有如下取值
CREATE_SUSPENDED(0x00000004):创建一个挂起的线程
0:表示创建后立即激活
ThreadId:指向一个ULONG数据类型的指针,用来接收线程ID返回值
return value:
返回值是一个线程句柄
注意:有一个函数为CloseHandle(handle),这个函数只是表示不关心或不再使用线程句柄这个变量了,而不是关闭线程
_beginthreadex
在这里不做说明,因为参数与CreateThread基本相同,值得一提的是由于该函数为线程保存了本地数据块,所以该函数比CreateThread安全
unsigned int WINAPI WorkThread4(void* param)这个是线程函数的格式
还有一个是C++11的特性
在头文件thread中
Thread t1(func);
有两种用法:
1.非成员线程函数
void WorkThread3(int p1,char p2)//参数个数随意定制
thread t1(WorkThread3,p1);
2.成员函数
class AS
{
public:
AS()
{
}void Catch(){ for (int i = 0; i < 1000; i++) { cout << "抓到第" << i << "只老鼠" << endl; }}
};
AS hs;
thread t1(&AS::Catch, hs);
- 创建线程
- 创建线程
- 创建线程
- 线程创建
- 线程创建
- 创建线程
- 创建线程
- 创建线程
- 创建线程
- 线程创建
- 创建线程
- 线程创建
- 创建线程
- 创建线程
- 创建线程
- 线程创建
- 创建线程
- 线程创建
- Java中子类和父类相关方法的执行顺序
- Android Studio安装的时候路径名错误
- QueryRunner类方法
- 【Spring】DispatcherServlet源码分析
- 关于Android开发自己的一些知识储备
- 线程创建
- 手机扫描二维码原理和二维码生成的实现
- 高精度乘法入门详解(高精乘高精)
- 用nagios实现服务器状态监控
- cmd输入一个日期,算出是一年的多少周
- Windows下搭建JNI开发环境
- 前端框架的思考
- NHibernate composite-id class must override Equals() 解决办法
- css hack分类及使用方法