C言語——beginthreadex関数サブスレッドの作成

1299 ワード

_beginthreadexはC言語でサブスレッドを作成するための関数であり、processに宣言される.hヘッダファイルではwindowsを結合する必要がある.hヘッダファイル、すなわち2つのヘッダファイルを含み、以下のようにC外部宣言を宣言する.
#include   // for HANDLE
#include   // 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を記録するアドレス);