21xrx.com
2024-12-22 20:14:32 Sunday
登录
文章检索 我的文章 写文章
C++ 11 标准下的多线程:std::thread
2023-07-06 19:50:37 深夜i     --     --
C++11 多线程 std::thread

在C++ 11标准下,多线程编程得到了更好的支持。C++ 11提供了一个名为std::thread的类,用于创建和管理多线程。std::thread使得多线程编程变得简单,而且比传统的线程创建方式更安全和更简洁。

std::thread使用起来非常简单。您只需要创建一个std::thread对象,并传入一个线程函数。线程函数可以是一个普通的函数,也可以是一个类的成员函数。在代码中调用std::thread的join()函数,就可以等待线程完成。

下面是一个简单的例子,展示了如何使用std::thread创建一个线程并等待它完成。


#include <thread>

#include <iostream>

void threadFunction()

  std::cout << "Thread function running." << std::endl;

int main()

{

  std::thread t(threadFunction);

  t.join();

  return 0;

}

上面的代码中,我们首先定义了一个名为threadFunction的函数,它将作为新线程执行的函数。然后,在main函数中,我们创建了一个std::thread对象t,并传入了threadFunction。最后,调用t.join()函数,等待线程完成。

在实际的多线程应用中,您可能需要传递参数给线程函数,并且线程函数可能需要返回一些结果。这时候,可以使用lambda表达式来实现。

下面是一个演示如何使用lambda表达式的例子。


#include <thread>

#include <iostream>

int main()

{

  int data = 0;

  std::thread t([&data]()

    std::cout << "Thread function running." << std::endl;

    data = 1;

  );

  t.join();

  std::cout << "Data: " << data << std::endl;

  return 0;

}

在上面的代码中,我们定义了一个名为data的整数,并传递给lambda表达式中的线程函数。在该lambda表达式中,我们将data设置为1。然后,在join()函数调用之后,我们打印出data的值。

总的来说,std::thread是一个非常有用的类,用于多线程编程。它提供了一种比传统线程创建方式更简单和更安全的方式,避免了许多常见的错误和问题。在了解了std::thread之后,您将更加容易创建并管理多线程程序。

  
  

评论区

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