这次写的线程的同步与互斥,不依赖于任何系统,完全使用了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; }