C言語——beginthreadex関数サブスレッドの作成
1299 ワード
_beginthreadexはC言語でサブスレッドを作成するための関数であり、processに宣言される.hヘッダファイルではwindowsを結合する必要がある.hヘッダファイル、すなわち2つのヘッダファイルを含み、以下のようにC外部宣言を宣言する.
_beginthreadexはCreateThreadに基づくが
CreateThreadの方が安全です
使用例は次のとおりです.
_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 // 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を記録するアドレス);