- C++11支持与平台无关的多线程库,#include <thread>即可使用;
- 使用mutex完成线程间数据的共享操作,mutex.lock()方法为阻塞式加锁,在未获得锁之前,线程会阻塞;mutex.try_lock()为非阻塞式加锁,即使未获得锁,也会即刻返回,不会阻塞线程;
- 使用thread.join()方法,在子线程未结束之前,调用子线程的线程会被阻塞;
- 测试代码如下:
#include "iostream" #include <thread> #include <mutex> using namespace std; void thread_task1() { int b = 500000; while (b--); mtx.lock();//mtx.try_lock()为非阻塞形式的,mtx.lock()为阻塞 cout << "thread1" << endl; mtx.unlock(); }; void thread_task2() { int a = 100000; while (a--); mtx.lock(); cout << "thread2" << endl; //mtx.unlock(); } int main() { thread t(thread_task1); thread d(thread_task2); t.join();//阻塞主线程,直到该线程执行完毕,才会执行主线程 d.join(); cout << "mainthread" << endl; getchar(); return 0; }
C++11随笔(一)多线程
最新推荐文章于 2024-01-29 14:15:02 发布