16. 多线程多进程
文章平均质量分 89
1
Lzg_na
这个作者很懒,什么都没留下…
展开
-
进程通信——管道
管道是Linux中进程间通信的一种方式,他把一个程序的输出直接连接到另一个程序的输入。匿名管道和命名管道。管道不属于进程的资源,而是和套接字一样,属于操作系统(也就不是fork函数的复制对象)。所以,两个进程通过操作系统提供的内存空间进行通信。无名管道是Linux中管道通信的一种原始方法,如下图所示,它具有如下特点:(1)它只能用于具有亲缘关系的进程之间的通信(也就是父子进程或者兄弟进程之间)。(2)它是一个单工的通信模式,具有固定的读端和写端,一边只能读,一边只能写。原创 2024-10-16 20:49:57 · 1046 阅读 · 0 评论 -
进程通信——消息队列
消息队列称为报文队列也叫做信箱,是linux的一种通信机制这种通信机制传递的数据具有某种结构,而不是简单的字节流。消息队列的本质是内核提供的链表,内核基于这个链表,实现了一个数据结构。内核又基于此提供了从一个进程向另一个进程发送一块数据的方法向消息队列写数据,实际上是向这个数据结构中插入一个新节点;从消息队列读数据,实际上是从这个数据结构中删除一个节点。消息队列也有管道一样的不足,就是每个数据块的最大长度是有限的,系统上全体队列的最大值也有一个上限。原创 2024-09-01 16:19:39 · 1036 阅读 · 0 评论 -
进程间通信——互斥
多个进程同步访问同一个资源和多个线程同步访问同一个资源相同,也会存在资源抢占的情况。所以需要进行资源加锁。原创 2024-08-31 22:38:19 · 313 阅读 · 0 评论 -
进程通信——共享内存
不同进程的资源通常是独立的,他们所占用的内存互相独立,不可互相访问。而共享内存允许多个进程访问同一块内存区域,从而实现数据的共享和交换。是一种高效的进程通信方法。在共享内存中,多个进程可以将同一块物理内存,映射到它们各自的虚拟地址中,使它们可以直接读写该内存的内容,而无需通过消息传递等其它通信方式,也就是“完全无需额外的拷贝这种直接的内存访问,使得数据交换更高效。原创 2024-08-31 16:38:10 · 1199 阅读 · 0 评论 -
C++线程互斥加锁总结
更新中本文将多线程中的一些加锁部分抽取出来深入学习,C++11部分有了一些崭新的库,C++17又支持了共享互斥锁。而C++98更偏向于C语言的方式,所以将C和C++区分开展示案例。原创 2024-08-10 16:18:55 · 870 阅读 · 0 评论 -
C/C++信号量
信号量是一种特殊的变量,是操作系统层面的,可以被增加或减少。信号量用于保护一段资源,使其每次只能被有限的线程访问到。原创 2024-08-19 19:58:43 · 751 阅读 · 0 评论