c++ 线程如何使用

在 C++11 之前,C++ 标准库没有提供原生的线程支持,需要调用操作系统提供的 API 来实现多线程程序。而从 C++11 开始,C++ 标准库增加了对多线程的支持,包括语言层面的线程库和同步原语。

在 C++11 中要使用多线程,需要引入头文件 ,并调用 std::thread 类来创建线程,如下所示:

#include 
#include 

void printHello() {
    std::cout << "Hello from thread " << std::this_thread::get_id() << std::endl;
}

int main() {
    std::thread t(printHello);
    t.join();

    return 0;
}

上述代码中,我们使用 std::thread 类创建了一个新的线程,并在其中执行 printHello 函数。t.join() 语句会等待新线程执行完毕才会继续执行主线程。

编译及运行:

book@ubuntu:~/Desktop/c++_study$ g++ -o share share.cpp -lpthread
book@ubuntu:~/Desktop/c++_study$ ./share 
Hello from thread 140650881320704

需要注意以下几点:

  1. 如果一个线程被创建但没有调用 joindetach 函数来等待或者分离该线程,则该线程被销毁时会抛出异常 std::terminate()

  2. 在单个程序中并发创建过多的线程可能会导致性能下降,建议根据计算机的硬件和资源情况来合理地控制线程数量。

  3. 线程间的数据共享问题需要通过同步原语(如互斥锁、条件变量等)来解决,否则程序会产生不可预期的结果。

  4. 由于多线程访问同一块内存可能会导致竞态条件,需要通过使用原子类型或者其他同步原语来防止这种情况的发生。

你可能感兴趣的:(c++,c++,开发语言)