
unix网络编程-进程间通信-读书笔记
文章平均质量分 81
Chen_Hulk
不积跬步,无以至千里;不积小流,无以成江海。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
进程间通信简介
进程间通信IPC(interprocess communication):描述的是运行在某个操作系统之上的不同进程间各种消息传递方式。POSIX:可移植操作系统接口(portable operation system interface),由电气与电子工程师学会IEEE开发的一系列标准。消息传递方式:管道(pipe):可在进程 和 shell 中使用,无名管道只能在共同祖先的进程间使用。管道普遍用...原创 2018-04-09 20:37:22 · 171 阅读 · 0 评论 -
posix信号量
信号量定义:信号量是一种用于提供 不同进程间 或 一个给定进程的不同线程间的同步手段的 原语。有了互斥锁和条件变量还提供信号量的原因是:提供信号量的目的是提供一种进程间同步方式,互斥锁和条件变量是作为线程间同步机制。尽管如此,但是信号量也是可以用于线程间,互斥锁和条件变量也可用于进程间。互斥锁是为了上锁而优化的;条件变量是为等待而优化的;信号量既可以用于上锁,也可以用于等待。二值信号量:其值为0或...原创 2018-05-06 20:55:06 · 852 阅读 · 0 评论 -
读写锁
读写锁规则:1.只要没有线程在修改某个给定的数据,那任意数目的线程都可以拥有该数据的读访问权限。2.仅当没有其他线程在读或修改某个给定的数据时,当前线程才可以修改它。读写锁优点:1.某些应用中读数据比写数据频繁,则可以改用读写锁替代互斥锁。2.任意给定时刻允许多个读出者存在提供了更高的并发度。共享-独占上锁:对于某个给定资源的共享访问。共享锁:获取一个读写锁用于读。独占锁:获取一个读写锁用于写。p...原创 2018-05-05 20:02:48 · 329 阅读 · 0 评论 -
共享内存区
共享内存区概述共享内存区是IPC形式中最快的,一旦这样的内存区映射到共享它的进程的地址空间,这些进程间的数据传递就不再涉及内核(进程不再通过执行任何进入内核的系统调用来彼此传递信息)。但是往该共享内存区存放信息或从中取走信息的进程间则需要某种形式的同步。...原创 2018-05-13 20:26:12 · 482 阅读 · 0 评论 -
互斥锁与条件变量
互斥锁互斥锁用于保护临界区,使得任何时刻只有一个线程在执行其中的代码。确切的说,互斥锁用于保护多个线程或多个进程分享的共享数据。posix互斥锁被声明为具有pthread_mutex_t数据类型的变量。若互斥锁变量是静态分配的,则初始化为: static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;若互斥锁变量是动态分配的(malloc)...原创 2018-04-23 21:02:05 · 372 阅读 · 0 评论 -
管道和FIFO(有名管道) (三)
FIFOFIFO指代先进先出,first in first out,也称为有名管道。其是一个单向的(半双工)的数据流,每个FIFO有一个路径名与之关联,从而实现无亲缘关系的进程访问同一个FIFO。FIFO由mkfifo函数创建#include <sys/types.h>#include <sys/stat.h>int mkfifo(const char *pathn...原创 2018-04-12 20:34:58 · 303 阅读 · 0 评论 -
管道和FIFO(有名管道) (二)
全双工管道全双工管道需要双向通信,使用两个独立的数据流,故需要两个半双工管道实现实现全双工,每个方向一个。因为一个管道只存在一个缓冲区,写入管道的任何数据都添加到该缓冲区的末尾,从管道读出的都是取自该缓冲区开头的数据。#include <sys/types.h> #include <unistd.h> #include <stdio.h>#includ...原创 2018-04-12 20:04:23 · 367 阅读 · 0 评论 -
管道和FIFO(有名管道) (一)
管道与FIFO管道:由于没有名字,只能在有共同祖先(有亲缘关系)的进程间使用。管道普遍用于shell中,也可以在程序中实现子进程向父进程回传信息。FIFO: 有名管道,可在无亲缘关系的进程间使用。以上都使用read/write函数访问。管道由pipe函数创建,提供一个单向数据流。#include <unistd.h>int pipe (int fd[2]);该函数返回两个文件描述符...原创 2018-04-10 20:57:05 · 3791 阅读 · 0 评论 -
poisx ipc
三种类型的IPC合称为 posix IPC:posix消息队列posix信号量posix共享内存区创建、打开IPC对象的oflag参数原创 2018-04-10 20:11:36 · 200 阅读 · 0 评论 -
Posix消息队列
概述消息队列可看做消息链表,线程可在队列中进行消息读写。在某个进程往一个队列写入消息之前,并不需要另外某个进程在该队列上等待消息的到达。一个进程可以往某个队列写入一些消息,然后终止,再让另一个进程在以后某个时刻读取这些消息。而管道或FIFO的最后一次关闭发生时,仍在该管道或FIFO上的数据将被清除。posix消息队列特点对posix消息队列的读总是返回最高优先级的最早消息。当往一个空队列放置一个消...原创 2018-04-15 21:04:13 · 342 阅读 · 0 评论 -
posix共享内存区
posix提供了两种在无亲缘关系进程间共享内存区的方法:1.内存映射文件:由open函数打开,通过mmap函数将得到的描述符映射到当前进程地址空间中的一个文件。2.共享内存区对象:由shm_open打开一个posix IPC名字,所返回的描述符由mmap函数映射到当前进程的地址空间。这两种技术都需要调用mmap,差别在于作为mmap的参数之一的描述符的获取手段:通过open或者通过shm_open...原创 2018-05-16 21:03:24 · 409 阅读 · 0 评论