C语言——_beginthreadex函数创建子线程
2017-02-03 14:14
676 查看
_beginthreadex是C语言用来创建子线程的函数,被声明在process.h头文件中,使用时需要结合windows.h头文件,即包含两个头文件,还要声明C外部声明,如下
#include <windows.h> // for HANDLE
#include <process.h> // for _beginthread()
extern "C" //
{
WINBASEAPI HWND WINAPI GetConsoleWindow();
}
_beginthreadex是基于 CreateThread,但比CreateThread更安全(后来的事物总会比较早的先进),
使用示例如下:
unsigned int StrategyThread::startStrategyThread(Trader* trader)
{
_mTrader = trader;
//主要是这一句,其他是本人做项目的时候,加的功能,与_beginthreadex无关
_beginthreadex(NULL, 0, runOnStrategyThread, NULL, 0, &sThreadId);
return sThreadId;
}
//创建子线程,运行策略制作工作,函数返回值必须如下
unsigned int __stdcall runOnStrategyThread(void* lpvoid)
{
//子线程运行在此函数内,
return 0;
}
_beginthreadex的函数原型为
uintptr_t _beginthreadex( // NATIVE CODE
void *security, //第1个参数:安全属性,NULL为默认安全属性
unsigned stack_size, //第2个参数:指定线程堆栈的大小。如果为0,则线程堆栈大小和创建它的线程的相同。一般用0
unsigned ( __stdcall *start_address )( void * ), //第3个参数:指定线程函数的地址,也就是线程调用执行的函数地址
void *arglist,//第4个参数:传递给线程的参数的指针,可以通过传入对象的指针,
unsigned initflag, //第5个参数:线程初始状态,0:立即运行;CREATE_SUSPEND:suspended(悬挂)
unsigned *thrdaddr //第6个参数:用于记录线程ID的地址
);
#include <windows.h> // for HANDLE
#include <process.h> // for _beginthread()
extern "C" //
{
WINBASEAPI HWND WINAPI GetConsoleWindow();
}
_beginthreadex是基于 CreateThread,但比CreateThread更安全(后来的事物总会比较早的先进),
使用示例如下:
unsigned int StrategyThread::startStrategyThread(Trader* trader)
{
_mTrader = trader;
//主要是这一句,其他是本人做项目的时候,加的功能,与_beginthreadex无关
_beginthreadex(NULL, 0, runOnStrategyThread, NULL, 0, &sThreadId);
return sThreadId;
}
//创建子线程,运行策略制作工作,函数返回值必须如下
unsigned int __stdcall runOnStrategyThread(void* lpvoid)
{
//子线程运行在此函数内,
return 0;
}
_beginthreadex的函数原型为
uintptr_t _beginthreadex( // NATIVE CODE
void *security, //第1个参数:安全属性,NULL为默认安全属性
unsigned stack_size, //第2个参数:指定线程堆栈的大小。如果为0,则线程堆栈大小和创建它的线程的相同。一般用0
unsigned ( __stdcall *start_address )( void * ), //第3个参数:指定线程函数的地址,也就是线程调用执行的函数地址
void *arglist,//第4个参数:传递给线程的参数的指针,可以通过传入对象的指针,
unsigned initflag, //第5个参数:线程初始状态,0:立即运行;CREATE_SUSPEND:suspended(悬挂)
unsigned *thrdaddr //第6个参数:用于记录线程ID的地址
);
相关文章推荐
- windows笔记-创建线程的另一个函数_beginthreadex
- 封装windows 线程创建函数_beginthreadex和createthread函数的类
- 采用_beginthread/_beginthreadex函数创建多线程
- 采用_beginthread/_beginthreadex函数创建多线程
- windows笔记-创建线程的另一个函数_beginthreadex
- 采用_beginthread/_beginthreadex函数创建多线程
- 在类中使用_beginthreadex函数创建线程并访问该类中的数据成员
- 采用_beginthread/_beginthreadex函数创建多线程两种方法
- windows笔记-创建线程的另一个函数_beginthreadex
- 创建线程的另一个函数_beginthreadex
- -创建线程的另一个函数_beginthreadex
- VC获取子线程入口函数的退出码(分别由CreateThread,_beginthread,_beginthreadex与AfxbeginThread 创建的子线程 )
- [Object-C语言随笔之三] 类的创建和实例化以及函数的添加和调用!
- _beginthreadex、CreateThread、AfxBeginThread 几个线程函数的区别(转)
- C++多线程实例(_beginThreadex创建多线程)
- C++多线程实例(_beginThreadex创建多线程)
- (单向链表)数据结构的创建和功能函数(C语言)
- 创建线程函数区别CreateThraed/_beginthreadex/AfxBeginThread(重点理解)
- _beginThreadex创建多线程解读
- 关于c语言用双重指针在无需返回的情况下于函数中创建链表的一点小小发现