目录

(constructor)

描述 (Description)

它用于构造线程对象。

声明 (Declaration)

以下是std :: thread :: thread函数的声明。

thread() noexcept;
template <class Fn, class... Args>
explicit thread (Fn&& fn, Args&&... args);
thread (const thread&) = delete;	
thread (thread&& x) noexcept;

C++11

thread() noexcept;
template <class Fn, class... Args>
explicit thread (Fn&& fn, Args&&... args);
thread (const thread&) = delete;	
thread (thread&& x) noexcept;

参数 (Parameters)

  • fn - 它是指向函数,指向成员的指针或任何类型的可移动构造函数对象的指针。

  • args... - 传递给fn调用的参数。

  • x - 它是一个线程对象。

返回值 (Return Value)

没有

异常 (Exceptions)

没有

数据竞争 (Data races)

修改x。

例子 (Example)

在下面的例子中解释了std :: thread :: thread函数。

#include <iostream>
#include <utility>
#include <thread>
#include <chrono>
#include <functional>
#include <atomic>
void f1(int n) {
   for (int i = 0; i < 5; ++i) {
      std::cout << "1st Thread executing\n";
      ++n;
      std::this_thread::sleep_for(std::chrono::milliseconds(10));
   }
}
void f2(int& n) {
   for (int i = 0; i < 5; ++i) {
      std::cout << "2nd Thread executing\n";
      ++n;
      std::this_thread::sleep_for(std::chrono::milliseconds(10));
   }
}
int main() {
   int n = 0;
   std::thread t1;
   std::thread t2(f1, n + 1);
   std::thread t3(f2, std::ref(n));
   std::thread t4(std::move(t3));
   t2.join();
   t4.join();
   std::cout << "Final value of n is " << n << '\n';
}

让我们编译并运行上面的程序,这将产生以下结果 -

1st Thread executing
2nd Thread executing
1st Thread executing
2nd Thread executing
1st Thread executing
2nd Thread executing
1st Thread executing
2nd Thread executing
2nd Thread executing
1st Thread executing
Final value of n is 5
↑回到顶部↑
WIKI教程 @2018