C++のマルチスレッドのbeginthread()関数の使い方は何ですか。
_beginthread()関数は、C言語でマルチスレッドを作成するための関数であり、新しいスレッドを作成するために使用されます。以下は、_beginthread()関数の使用方法です:
#include <iostream>
#include <process.h> // 包含 _beginthread() 函数的头文件
// 子线程函数
void ThreadFunc(void* arg) {
std::cout << "This is a child thread." << std::endl;
}
int main() {
// 创建一个新线程
unsigned int threadId;
intptr_t handle = _beginthread(ThreadFunc, 0, nullptr);
if (handle == -1) {
std::cerr << "Failed to create a new thread." << std::endl;
return 1;
}
// 等待子线程结束
_endthreadex(0);
std::cout << "Main thread exits." << std::endl;
return 0;
}
上の例では、まずヘッダーファイルを含み、次に子スレッド関数ThreadFuncを定義します。main()関数では、_beginthread()関数を呼び出して新しいスレッドを作成し、子スレッド関数ThreadFuncをその引数として渡します。_beginthread()関数の最初の引数は実行する子スレッド関数であり、2番目の引数はスタックサイズ(0はデフォルトのスタックサイズを使用することを意味します)、3番目の引数は子スレッド関数に渡される引数です。_beginthread()関数はハンドルを返し、以降の操作で使用できます。
メインスレッドでは、_endthreadex()関数を使用してサブスレッドの終了を待ちます。その後、メインスレッドはメッセージを出力して終了します。
_beginthread()関数はC言語の関数であり、そのためC++で使用する際にはヘッダーファイルを含め、std::coutとstd::cerrを使用してメッセージを出力する必要があります。また、_beginthread()関数が返すハンドルは、スレッドの終了を待つなどの後続操作に使用することができます。