下面是一个使用_beginthreadex
函数创建线程的示例:
#include <stdio.h>
#include <stdlib.h>
#include <process.h> // 包含 _beginthreadex 函数
unsigned int __stdcall ThreadFunc(void* param)
{
int threadId = *(int*)param;
printf("Thread ID: %d\n", threadId);
return 0;
}
int main()
{
int param1 = 1;
int param2 = 2;
// 创建两个线程,并传递参数给线程入口函数
uintptr_t handle1 = _beginthreadex(NULL, 0, &ThreadFunc, ¶m1, 0, NULL);
uintptr_t handle2 = _beginthreadex(NULL, 0, &ThreadFunc, ¶m2, 0, NULL);
if (handle1 != -1 && handle2 != -1)
{
// 等待线程结束
WaitForSingleObject((HANDLE)handle1, INFINITE);
WaitForSingleObject((HANDLE)handle2, INFINITE);
// 关闭线程句柄
CloseHandle((HANDLE)handle1);
CloseHandle((HANDLE)handle2);
}
return 0;
}
在上面的示例中,我们定义了一个名为 ThreadFunc
的函数作为线程的入口函数。该函数接收一个指针类型的参数,可以通过强制类型转换来获取实际的参数值。
在 main
函数中,我们创建了两个新线程,分别传递不同的参数给 ThreadFunc
函数。然后我们等待每个线程结束,并关闭相应的线程句柄。
请注意,需要包含头文件 <process.h>
来使用 _beginthreadex
函数,并在编译时链接 pthreadVC2.lib
库。具体的编译和链接方式可能因开发环境而异。
内容由零声教学AI助手提供,问题来源于学员提问