C++11 进阶大师的线程支持
转载请标明出处:
https://dujinyang.blog.csdn.net/
本文出自:【奥特曼超人的博客】
C++ 多线程编程及其挑战 🧵🚀
引言 📝
C++ 以其强大的性能和灵活性成为系统级编程的首选,但它的多线程编程简直是“硬核中的硬核”。如果你曾被 数据竞争(Data Race)、死锁(Deadlock)、条件竞争(Race Condition) 折磨过,那你一定懂其中的酸爽!😵💫
但别怕,C++11 引入了一整套标准库的 线程支持(<thread>
、<mutex>
、<condition_variable>
等),让我们可以少踩点坑,愉快(并发)地写代码!🎯
接下来,我们就来看看 C++ 的多线程编程,以及如何避开那些让人秃头的坑!🦸♂️💡
一、C++ 线程的基本操作 🚀
在 C++11 之前,我们通常依赖操作系统 API(如 pthread
)进行多线程编程,而 C++11 终于提供了标准化的 std::thread
,让创建线程变得简单直观。
1.1 std::thread
的基本用法 🧵
#include <iostream>
#include <thread>
void dujinyang_hello() {
std::cout << "Hello from thread!\n";
}
int main() {
std::thread dujinyang_t(dujinyang_hello);
dujinyang_t.join(); // 等待线程执行完成
std::cout << "Main thread finished.\n";
return 0;
}
1.2 使用 Lambda 表达式创建线程 🤖
#include <iostream>
#include <thread>
int main() {
std::thread dujinyang_t([]() {
std::cout << "Lambda thread running!\n";
});
dujinyang_t.join();
return 0