#include <thread>#include <iostream>#include <mutex>using namespace std;mutex g_mutex;void T1(){g_mutex.lock();cout << "Hello" << endl;g_mutex.unlock();}void T2(const char* str){g_mutex.lock();cout << str << endl;g_mutex.unlock();}int main(){thread t1(T1);thread t2(T2, "Hello world");t1.join();t2.join();return 0;}
存取钱案例
#include <thread>#include <iostream>#include <mutex>using namespace std;//取钱void Withdraw(mutex& m, int& money){for(int index = 0; index<100; index++){m.lock();money += 1;m.unlock();}}//存钱void Deposit(mutex& m, int& money){for(int index = 0; index<100; index++){m.lock();money -= 2;m.unlock();}}int main(){int money = 2000;mutex m;cout << "current money is:" << money << endl;//thread中传引用用refthread t1(Deposit, ref(m), ref(money));thread t2(Withdraw, ref(m), ref(money));t1.join();t2.join();cout << "Finally money is:" << money << endl;return 0;}
线程的交互与移动
