31、C++ 线程基础全解析

C++ 线程基础全解析

1. C++ 线程基础示例

为了展示 C++ 线程的简洁性,下面的示例创建了两个线程并等待它们执行完毕:

#include <thread>
#include <iostream>
void mythread()
{
    std::cout << "Hello World\n";
}
main()
{
    std::thread t1{mythread};
    std::thread t2{mythread};
    t1.join();
    t2.join();
}
// > g++ -std=c++17 scratchpad.cpp -lpthread; ./a.out
// Hello World
// Hello World

与 POSIX 版本的此示例相比,有一些显著差异:
- 线程函数本身可以有多种不同的函数签名,不限于 (void *)(*)(void *) 。在此示例中,线程函数使用 void(*)() 签名。
- 线程类型的构造函数也会创建线程(无需先定义类型,然后再显式创建线程)。

需要注意的是,在 Linux 中,仍需要将 pthread 库链接到示例中。这是因为,实际上,C++ 是使用 pthread 实例来提供线程支持的。

2. 获取线程 ID

和 POSIX 版本一样,C++ 也提供了获取线程 I

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值