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

news/2024/11/16 23:11:55/

算法题:

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

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

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

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

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

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

一.题目

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

二、反思

1.死锁

#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.解锁

#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.思路的异同

三.进步的地方


http://www.ppmy.cn/news/1547563.html

相关文章

2024 同一个网段,反弹shell四种方法【linux版本】bash、python、nc、villian反弹shell图解步骤

实验环境准备&#xff08;同一个网段下&#xff0c;我是桥接的虚拟机&#xff09; 一、bash反弹shell 二、python反弹shell 三、nc反弹shell 四、villain反弹shell 实验环境准备&#xff08;同一个网段下&#xff0c;我是桥接的虚拟机&#xff09; 一台kali的linux(攻击者)…

比特大陆/算能科技嵌入式面试题及参考答案

请描述 ubuntu 系统启动的过程。 当按下计算机电源按钮后,计算机硬件开始自检,这个过程是由 BIOS(或 UEFI)来执行的。BIOS 会检查硬件设备是否正常工作,如内存、硬盘等。之后,BIOS 会按照预设的启动顺序查找可引导的设备。 一旦找到包含 Ubuntu 系统的存储设备(如硬盘)…

嵌入式面试题练习 - 2024/11/15

欢迎找我进行职业规划&#xff0c;超值的自我投资 -> 嵌入式软件工程师一对一指导 1.设有定义char *p[]{"Shanghai","Beijing","Honkong"};则结果为j字符的表达式是&#xff08;&#xff09; A *p[1] 3 B *(p[1] 3) C *(p[3] 1) D p[3] […

一个win32 / WTL下多线程库(CThread类)的使用心得

说是多线程库&#xff0c;其实就是一个单独的.h文件&#xff0c;可以方便的放入WTL/win32工程中。 下载地址&#xff1a;CThread. 里面也简单介绍了 用法。 具体用法&#xff0c;首先自定义一个子线程类继承CThreadImpl<T>&#xff0c;注意他是个模板类。 class CMySu…

Flume1.9.0自定义拦截器

需求 1、在linux日志文件/data/log/moreInfoRes.log中一直会产生如下JSON数据&#xff1a; {"id":"14943445328940974601","uid":"840717325115457536","lat":"53.530598","lnt":"-2.5620373&qu…

服务器能支持承载多少访问量??

服务器能支持承载的访问量是一个受多种因素影响的复杂问题。 以下是对该问题的详细分析&#xff1a; 一、关键影响因素 服务器的硬件配置&#xff1a; 处理器性能&#xff1a;服务器的CPU性能决定了其处理请求的速度和能力。高性能的CPU能够更快速地处理并发请求&#xff0c;…

提升治超站效率:因泰立科技激光式车辆长宽高检测系统

ILS-04激光式车辆长宽高检测系统是因泰立科技自主研发的一套全自动车辆长宽高检测系统。已广泛地应用于固定式治超站、高速公路入口治超站、非现场执法站、物料场、停车场的车辆长宽高检测。 激光车辆检测技术的优点&#xff1a;检测精度明显高于目前同类的非接触检测技术如微波…

C/C++语言基础--initializer_list表达式、tuple元组、pair对组简介

本专栏目的 更新C/C的基础语法&#xff0c;包括C的一些新特性 前言 initializer_list表达式、tuple元组、pair对组再C日常还是比较常用的&#xff0c;尤其是对组在刷算法还是挺好用的&#xff0c;这里做一个简介&#xff1b;这三个语法结合C17的结构化绑定会更好用&#xff…