C语言——_beginthreadex函数创建子线程

本文介绍了C语言中用于创建子线程的函数 `_beginthreadex`,该函数声明在 `process.h` 头文件中,并需结合 `windows.h` 使用。创建线程时,需包含相关头文件并进行C外部声明。文章提供了一个使用 `_beginthreadex` 的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

_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的地址

    );


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值