进程通信与线程同步问题

简介: 进程通信与线程同步问题是高并发我们需要考虑的一个很重要的问题,本文将简单介绍相关知识。

线程同步

线程同步分为线程互斥线程通信

线程互斥:

主要是通过互斥锁(会有用户态与内核态之间的切换)实现的,对于一些比较轻的操作比如++--之类的可以使用原子锁,在内存与寄存器层面上实现++--操作,这个操作不会影响线程的状态,因此效率更高。

线程同步:

主要是通过条件变量(+互斥锁)信号量实现的。

条件变量(+互斥锁)的控制更加精细,比如对于生产者消费者问题中可以实现两种场景,场景一:先生产后消费;场景二:生产一个消费一个;而信号量对于这种问题只能实现场景一,也就是说它实现粗略的线程通信。因此如果要实现精细的线程通信我们考虑用条件变量(+互斥锁),如果只是考虑一个线程需要依赖于另外一个线程实现我们推荐用信号量。此外信号量作为C++20新特性的提供的一种语法,可以由C++11新特性里的条件变量+互斥锁实现。此外,从某种意义上来讲,互斥锁就相当于一个二元信号量,区别在于信号量不能实现线程互斥,因为线程互斥必须只要抢到锁的线程才可以释放锁,而对于信号量来讲可以由其他线程进行post操作。

相关文章
|
22天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
1月前
|
Linux
Linux 查看进程PID和线程CPU和内存占用情况
Linux 查看进程PID和线程CPU和内存占用情况
22 0
|
2月前
|
消息中间件 安全 Linux
线程同步与IPC:单进程多线程环境下的选择与权衡
线程同步与IPC:单进程多线程环境下的选择与权衡
64 0
|
2月前
|
消息中间件 存储 算法
【软件设计师备考 专题 】操作系统的内核(中断控制)、进程、线程概念
【软件设计师备考 专题 】操作系统的内核(中断控制)、进程、线程概念
84 0
|
1月前
|
数据采集 数据库 C++
python并发编程:并发编程中是选择多线程呢?还是多进程呢?还是多协程呢?
python并发编程:并发编程中是选择多线程呢?还是多进程呢?还是多协程呢?
20 0
|
2月前
|
消息中间件 Linux 调度
【Linux 进程/线程状态 】深入理解Linux C++中的进程/线程状态:阻塞,休眠,僵死
【Linux 进程/线程状态 】深入理解Linux C++中的进程/线程状态:阻塞,休眠,僵死
75 0
|
3天前
|
调度
线程和进程的区别?
线程和进程的区别?
|
9天前
|
Java 数据库连接 数据处理
Python从入门到精通:3.1.2多线程与多进程编程
Python从入门到精通:3.1.2多线程与多进程编程
|
9天前
|
消息中间件 安全 调度
Python从入门到精通:3.1.1多线程与多进程——进程和线程的概念
Python从入门到精通:3.1.1多线程与多进程——进程和线程的概念
|
9天前
|
监控 安全 Java
一文讲明白Java中线程与进程、并发与并行、同步与异步
一文讲明白Java中线程与进程、并发与并行、同步与异步
7 1