ZBLOG

_beginthreadex使用 举例说明

下面是一个使用_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, &param1, 0, NULL);
    uintptr_t handle2 = _beginthreadex(NULL, 0, &ThreadFunc, &param2, 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助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=15658

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?