21xrx.com
2024-12-22 20:36:51 Sunday
登录
文章检索 我的文章 写文章
C++11 多线程
2023-07-14 05:29:12 深夜i     --     --
C++11 多线程 并发编程 线程安全 线程同步

C++11是C++语言标准的第二个重大更新。除了许多新的功能和库外,C++11还引入了对多线程编程的支持。多线程编程是一种并行编程技术,在高性能计算、游戏编程、网络编程等领域得到了广泛的应用。

C++11引入了一些新的类和函数来支持多线程编程。其中最重要的是std::thread类,它可以用来创建和管理线程。std::thread类的构造函数可以接受一个函数对象和其参数,然后创建一个新的线程并启动它。示例代码如下:


#include <iostream>

#include <thread>

void hello()

  std::cout << "Hello World!" << std::endl;

int main()

{

  std::thread t(hello);

  t.join();

  return 0;

}

上面的代码创建了一个新的线程t,它执行hello()函数。由于主线程需要等待子线程执行结束后才能继续执行,所以使用了t.join()函数来等待线程t结束。

C++11还提供了一些函数来管理线程。例如,std::this_thread::get_id()可以返回当前线程的唯一标识符。示例代码如下:


#include <iostream>

#include <thread>

void print_id()

{

  std::cout << "Thread ID: " << std::this_thread::get_id() << std::endl;

}

int main()

{

  std::thread t1(print_id);

  std::thread t2(print_id);

  t1.join();

  t2.join();

  return 0;

}

上面的代码创建了两个新的线程t1和t2,它们都执行print_id()函数。由于每个线程都有自己的唯一标识符,所以输出结果将会是不同的。

C++11还引入了一些新的同步原语,例如std::mutex、std::lock_guard和std::unique_lock等。这些原语用于管理线程之间的共享资源,可以避免竞争条件和死锁等问题。

总之,C++11的多线程支持为C++开发者提供了更方便、更高效的编程方式,使得开发者可以更轻松地编写并行程序和高性能的应用。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复