std::thread vs CreateThread

来源:互联网 发布:c语言cin怎么用 编辑:程序博客网 时间:2024/05/30 23:27

从 C++11 开始,线程,成为了 C++ 标准库的一部分,所以我们可以不再使用 CreateThread 来创建线程,简简单单地使用 std::thread 即可。

而且,CreateThread 是平台相关的,而 std::thread 是跨平台的。

例:

// MultiThreadConsole.cpp : Defines the entry point for the console application.//#include <iostream>#include <thread>#include <chrono>using namespace std;static bool is_resouce_ready = false;static bool to_terminate = false;static thread* worker_thread = nullptr;void foo();int main(){    cout << "Main thread start." << endl;    worker_thread = new std::thread(foo);    this_thread::sleep_for(chrono::seconds(1));    is_resouce_ready = true;    this_thread::sleep_for(chrono::seconds(3));    to_terminate = true;    this_thread::sleep_for(chrono::seconds(1));    cout << "Main thread is ending." << endl;    return 0;}void foo(){    cout << "Worker thread start." << endl;    while (!is_resouce_ready && !to_terminate) {}    cout << "Worker thread is working." << endl;    while (!to_terminate)    {        cout << "LOOP" << endl;        this_thread::sleep_for(chrono::milliseconds(500));    }    cout << "Worker thread is ending." << endl;}

这里写图片描述

参考文档

  • std::thread
  • std::this_thread::sleep_for
0 0
原创粉丝点击