1. C++11线程基础概念解析
在C++11标准之前,C++语言本身并不直接支持多线程编程,开发者需要依赖平台特定的API(如POSIX线程或Windows线程API)来实现多线程功能。C++11引入的<thread>头文件彻底改变了这一局面,为C++带来了原生线程支持。
线程(Thread)是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。与进程相比,线程具有以下特点:
- 共享同一进程的地址空间和系统资源
- 创建和切换的开销远小于进程
- 通信机制更为简单高效
在C++11中,std::thread类代表一个执行线程。当创建一个std::thread对象时,它会立即开始执行指定的可调用对象。每个线程都有:
- 独立的程序计数器(PC)
- 专属的寄存器组
- 私有的调用栈
重要提示:如果不显式管理线程对象,当
std::thread对象被销毁时程序会终止。必须确保在销毁线程对象前调用join()或detach()。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 线程创建与基本管理
2.1 创建线程的三种方式
C++11提供了多种创建线程的方法,每种方法适用于不同的场景:
函数指针方式:
cpp复制#include <iostream>
#include <thread>
void threadFunction(int param) {
std::cout << "线程执行中,参数值: " << param << std::endl;
}
int main() {
std::thread t(threadFunction, 42);
t.join();
return 0;
}
函数对象方式:
cpp复制class ThreadFunctor {
public:
void operator()(int x) {
std::cout << "函数对象线程,参数: " << x << std::endl;
}
};
int main() {
ThreadFunctor tf;
std::thread t(tf, 100);
t.join();
return 0;
}
