//1.创建线程
#include <thread>
void func(){
std::this_thread::sleep(std::chrono::microseconds(50));//当前线程休眠
std:::this_thread::get_id();//获取当前线程id
}
int main(){
std::thread thread(func,a);
}
//.join() 主线程等待子线程结束
//.detach() 主线程与子线程分离
//2.互斥量
//两个线程访问了公共资源,需要对资源作保护
#include <thread>
#include <mutex>
std::mutex mtx;
int i=0;
void t1(){
mtx.lock();//上锁其他程序无法访问i
i++
mtx.unlock();//解锁
}
int main(){
std::thread t1(func);
std::thread t2(func);
t1.join();
t2.join();
}
//问题1:可呢个出现死锁的情况,当lock和unlock之间的函数很复杂时
//解决:
//锁用 std::lock_guard<std::mutex>lock(mtx1);
//这个类会先上锁,但是在析构函数中解锁
//还有 std::unique_lock<std::mutex> lock3(mtx1);
//lock3.unlock();//可以主动释放
//问题2:可能出现多个锁,锁冲突
//解决:
//std::lock(mtxt1,mtxt2);