c++写一个死锁并且自己解锁

刷算法题:

第一遍:1.看5分钟,没思路看题解

2.通过题解改进自己的解法,并且要写每行的注释以及自己的思路。

3.思考自己做到了题解的哪一步,下次怎么才能做对(总结方法)

4.整理到自己的自媒体平台。

5.再刷重复的类似的题目,根据时间和任务安排刷哪几个板块

6.用c++语言 都刷过一遍了 就刷中等

一.题目

c++写一个死锁并且自己解锁。

二、反思

1.死锁

cpp 复制代码
#include<thread>
#include<mutex>

using namespace std;

mutex mutex1;
mutex mutex2;

void thread1_deadlock(){
    lock_guard<mutex> lock1(mutex1);//创建的时候立即锁

    this_thread::sleepfor(chrono::milliseconds(100));

    lock_guard<mutex> lock2(mutex2);

}

void thread2_deadlock(){
    lock_guard<mutex> lock1(mutex2);

    this_thread::sleepfor(chrono::milliseconds(100));

    lock_guard<mutex> lock2(mutex1);
}

int main(){
    thread t1(thread1_deadlock);
    thread t2(thread2_deadlock);
    
    t1.join();
    t2.join();
    
    return 0;
}

2.解锁

cpp 复制代码
#include <iostream>
#include <thread>
#include <mutex>

using namespace std;

mutex mutex1;
mutex mutex2;

void thread1_no_deadlock(){
    unique_lock<mutex> lock1(mutex1,defer_lock);//创建,但是先不锁
    unique_lock<mutex> lock2(mutex2,defer_lock);

    lock(lock1,lock2);//同时两个才能锁
    this_thread::sleep_for(chrono::seconds(1));
    
}

void thread2_no_deadlock(){
    unique_lock<mutex> lock1(mutex1,defer_lock);
    unique_lock<mutex> lock2(mutex2,defer_lock);

    lock(lock1,lock2);
    this_thread::sleep_for(chrono::seconds(1));
}

int main(){
    thread t3(thread_no_deadlock);
    thread t4(thread_no_deadlock);

    t3.join();
    t4.join();
    return 0;
}

3.思路的异同

三.进步的地方

相关推荐
栗子~~几秒前
Python实战- Milvus 向量库 使用相关方法demo
开发语言·python·milvus
狐凄2 分钟前
Python实例题:基于 Flask 的在线聊天系统
开发语言·python
狐凄3 分钟前
Python实例题:基于 Flask 的任务管理系统
开发语言·python
NAGNIP8 分钟前
Transformer注意力机制——MHA&MQA&GQA
人工智能·算法
NAGNIP12 分钟前
一文搞懂KV-Cache
人工智能·算法
CoovallyAIHub19 分钟前
RTMPose:重新定义多人姿态估计的“实时”标准!
深度学习·算法·计算机视觉
shootero@126.com20 分钟前
R语言开发记录,一
开发语言·r语言
勤奋的知更鸟23 分钟前
Java 编程之状态模式
java·开发语言·状态模式
沐知全栈开发32 分钟前
R 列表:深入解析与高效应用
开发语言
爱喝茶的小茶33 分钟前
周赛98补题
开发语言·c++·算法