此次寫的線程的同步與互斥,不依賴於任何系統,徹底使用了C++11標準的新特性來寫的,就連線程函數都用了C++11標準的lambda表達式。ios
/* * 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; }