C++11スレッドの同期と反発
3061 ワード
今回書かれたスレッドの同期と反発は,どのシステムにも依存せず,C++11標準の新しい特性を完全に用いて書かれ,スレッド関数でもC++11標準のlambda式を用いた.
/*
* thread_test.cpp
*
* Copyright 2013
*
* :
* g++ thread_test.cpp -o thread_test -Wall -std=c++11 -pedantic-errors -pthread
*/
#include <iostream>
#include <cstdlib>
#include <thread>
#include <mutex>
#include <chrono>
using namespace std;
int main(void)
{
const int n = 50;
const long t = 500;
mutex m;
thread thread1( [&m,n,t](void)->void
{
for ( int i=0; i < n; ++ i )
{
m.lock();
cout << "Thread one." << endl;
m.unlock();
this_thread::sleep_for(chrono::milliseconds(t));
}
});
thread thread2( [&m,n,t](void)->void
{
for ( int i=0; i < n; ++ i )
{
m.lock();
cout << "Thread two." << endl;
m.unlock();
this_thread::sleep_for(chrono::milliseconds(t));
}
});
thread1.join();
thread2.join();
return EXIT_SUCCESS;
}