3.8-3.11线程同步、互斥锁、死锁、读写锁

news/2024/5/20 12:48:12 标签: 线程同步, 互斥锁, 死锁, 读写锁

目录

1.线程同步

2.互斥锁/互斥量

3.死锁

4.读写锁


1.线程同步


2.互斥锁/互斥量

线程A锁定互斥量M后,线程B也想锁定互斥量M,此时B会被阻塞,那么B要阻塞多久呢?或者说A解锁互斥量M之后B怎样知道呢?

B线程可以一直循环进行判断,但是这种方法中B线程占用了宝贵的处理时间去反复检测;

B线程还可以先休眠一会儿,再去检查,但是这样的话,休眠多久合适呢?不好说;

还有一种比较好的方法是使用条件变量。当某个线程已经确定条件得到满足,它就可以通知一个或者多个正在条件变量上进行等待的线程,唤醒它们并让它们继续处理。

 

 

 


 

3.死锁


4.读写锁


 

 

 

 

 

 


http://www.niftyadmin.cn/n/1032295.html

相关文章

3.12-3.14生产者和消费者模型、条件变量、信号量

目录 1.生产者消费者模型 2.条件变量 3.信号量 1.生产者消费者模型 2.条件变量 3.信号量 初始化的值:生产者-目前可以生产几个 -n 消费者-目前可以消费几个 -0

4.1-4.3网络结构模式、MAC地址、IP地址、端口

目录 1.网络结构模式 2.MAC地址 3.IP地址 4.端口 1.网络结构模式 2.MAC地址 3.IP地址 4.端口

4.4-4.7网络模型、协议

目录 1.网络模型 2.协议 1.网络模型 2.协议

4.8-4.19socket介绍、字节序、字节序转换函数、socket地址、ip地址转换函数、tcp通信流程、socket函数、TCP三次握手、滑动窗口、TCP四次挥手

目录 1. socket介绍 2.字节序 3. socket地址 4.IP地址转换(字符串ip-整数,主机、网络字节序的转换) 5.TCP通信流程 6.套接字函数 7.TCP三次握手 8.TCP滑动窗口 9.TCP四次挥手 1. socket介绍 2.字节序 3. socket地址 4.IP地址转换&am…

4.25-4.31 I/O多路复用

目录 1.I/O多路复用(I/O多路转接) 2.select 3.poll 4.epoll 1.I/O多路复用(I/O多路转接) 2.select 3.poll 4.epoll

4.32-4.35 UDP通信实现、广播、组播、本地套接字通信

目录 1.UDP通信 2.广播 3.组播(多播) 4.本地套接字通信 1.UDP通信 2.广播 3.组播(多播) 4.本地套接字通信

二分查找的迭代和递归形式

迭代形式: 递归形式:

LeetCode283、移动0

方法1&#xff1a; class Solution { public:void moveZeroes(vector<int>& nums) {int k0; //nums[0...k)非0//遍历到第i个元素后&#xff0c;保证[0...i)中所有非0元素都按照顺序排列在[0...k)中for(int i0;i<nums.size();i){if(nums[i]){nums[k]nums[i];k;}…