![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
UNP2
文章平均质量分 70
安菲拉尔
这个作者很懒,什么都没留下…
展开
-
UNIX网络编程卷二 笔记 管道和FIFO
第1章 管道和FIFO 1.1 pipe int pipe(intfd[2]); 创建一个单向、半双工管道,其中fd[0]用于读,fd[1]用于写。 1.2 fork 管道很少在单个进程内使用,一般用在两个有亲缘关系的进程间,父进程在pipe后fork,然后和子进程或子进程的后裔利用这个管道通信。 pipe(fd); if ((pid =fork()) == 0) {原创 2013-08-01 10:48:25 · 1789 阅读 · 0 评论 -
UNIX网络编程卷二 笔记 Posix共享内存区
第6章 Posix共享内存区 6.1 共享内存区 共享内存区是可用IPC形式中最快的,只有映射和解除映射需要进入内核的系统调用,映射后对共享内存区的访问和修改不再需要系统调用(内核只要负责好页表映射和处理页面故障即可),但通常需要同步手段。 一个客户-服务器间传递文件数据的例子中,FIFO或消息队列等IPC方式需要4次内核-进程间的数据复制,每次都需要切换地址空间,开销很大;共享内原创 2013-08-09 11:02:08 · 1040 阅读 · 0 评论 -
UNIX网络编程卷二 笔记 互斥锁和条件变量
第3章 互斥锁和条件变量 3.1 概述 默认情况下互斥锁和条件变量用于线程间同步,若将它们放在共享内存区,也能用于进程间同步。 对一个公共对象的访问若不能原子进行,就需要某种形式的同步。 3.2 互斥锁 静态分配的互斥锁变量可以用常值PTHREAD_MUTEX_INITIALIZER初始化,动态分配和用于共享内存的互斥锁变量要用pthread_mutex_i原创 2013-08-04 10:39:39 · 1593 阅读 · 0 评论 -
UNIX网络编程卷二 笔记 Posix信号量
第5章 Posix信号量 5.1 概述 Posix信号量分为两种: 1. 有名信号量:使用Posix IPC名字标识。 2. 内存信号量:存放在共享内存区中。 Posix信号量不必在内核中维护(System V信号量由内核维护),由可能为路径名的名字来标识。 5.2 基本操作 三种基本操作: 1. 创建(create):指定初始值。 2. 等待(wait):如果原创 2013-08-06 11:58:10 · 1477 阅读 · 0 评论 -
UNIX网络编程卷二 笔记 Posix消息队列
第2章 Posix消息队列 2.1 概述 每个消息都是一个有优先级的记录,进程写入消息前,不需要有其它进程在等待消息。消息队列具有随内核的持续性。 Posix消息队列与System V消息队列的两个主要区别: 1. Posix读返回最高优先级的最早消息,System V返回指定优先级的最早消息。 2. 向空队列放置一个消息时,Posix可以产生一个信号或启动一个线程。原创 2013-08-03 15:16:43 · 1116 阅读 · 0 评论 -
UNIX网络编程卷二 笔记 读写锁和记录上锁
第4章 读写锁和记录上锁 4.1 读写锁 读写锁用于读取数据比修改数据更频繁的场景,它的分配规则如下: 1. 没有线程持有写锁时,任意多的线程可以持有读锁。 2. 仅当没有线程持有读锁或写锁时,才能分配写锁。 当已有线程持有读锁时,另一线程申请写锁则会阻塞,若后续还有读锁的申请,此时有两种策略: 1. 对后续的读锁请求都通过,可能会造成因读锁不断被分配,写锁申请始终阻塞原创 2013-08-06 11:56:20 · 1208 阅读 · 0 评论