从 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;
}