1、互斥锁(量)和条件变量默认情况下互斥锁和条件变量用于线程间同步,若将它们放在共享内存区,也能用于进程间同步。1.1 互斥锁1、概述:
互斥锁(Mutex,也称互斥量),防止多个线程对一个公共资源做读写操作的机制,以保证共享数据的完整性。用以保护临界区,以保证任何时候只有一个线程(或进程)在访问共享资源(如代码段)。保护临界区的代码形式:lock_the_mutex(...);
临界区
unlo...
分类:
其他好文 时间:
2016-05-30 14:47:31
阅读次数:
246
正常情况是啥?一方发送FIN,另一方相应,四次挥手,断开连接。但是就像生活一样,服务器也总有意外,以下是《Unix网络编程》中提到的服务器的四种常见的意外情况。客户端在服务器端出现意外情况下是什么状况,又该该如何处理呢? 首先给出整个网络的基本流程图。客户端从标准输入读入数据,发往服务器端,服务器接 ...
分类:
其他好文 时间:
2016-05-28 12:57:57
阅读次数:
222
今天我在阅读《Unix网络编程》时候遇到一个问题:accept返回时的connfd,是父子进程之间共享的?我当时很不理解,难道打开的文件描述符不是应该在父子进程间相互独立的吗?为什么是共享的呢?fork之后父子进程之间共享了什么?堆上的变量是否也共享了呢? 做了如下的代码测试,在fork之前先创建一 ...
分类:
系统相关 时间:
2016-05-26 22:06:07
阅读次数:
250
socket函数原型:#include<sys/socket.h>
intsocket(intfamily,inttype,intprotocol);//执行成功则返回非负的套接字描述符;出错则返回-1socket函数用来打开一个(主动)套接字。在该函数中需要指定所使用的协议族(family)、套接字类型(type)、使用的协议(protocol)。协议族..
分类:
其他好文 时间:
2016-05-20 14:51:47
阅读次数:
138
今天给PHP程序员们推荐几本PHP进阶好书,PHP程序员们不要以为自己现在已经工作就放弃了一个上进的心,现在互联网发展这么快,小心长江后浪推前浪,前浪死在沙滩上哦。。。 《UNIX网络编程卷1(第3版)》 《UNIX网络编程卷2(第2版)》 《UNIX环境高级编程(第3版)》 《UNIX编程艺术》 ...
分类:
Web程序 时间:
2016-05-19 14:52:24
阅读次数:
149
信号量是一种用于提供不同进程间或一个给定进程的不同线程件同步手段的原语.信号量是一个特殊的整数值,主要用来控制多个进程对临界资源的互斥访问,进程根据信号量来判断是否有 访问的资源。
信号量是一个计数器,可用于同步多进程对共享数据对象得访问,为了获得共享资源,进程需要执行以下操作:
1、测试控制该资源的信号量
2、若此信号量的值为正,则进程可以使用该资源,进程将信号...
分类:
其他好文 时间:
2016-05-18 18:43:14
阅读次数:
198
管道是最初的Unix IPC形式,它们的最大局限是没有名字,所以,管道只能用于有亲缘关系的进程只见使用。之后,慢慢随着FIFO的加入,这点才有所改观。FIFO也成为又名管道。管道和FIFO的共同点就是它们都是通过read和write函数进行访问的。管道:
管道时有pipe函数创建,提供一个单路数据流。也就是说,所有的管道都是半双工。
管道创建方法:
#include ...
分类:
其他好文 时间:
2016-05-18 18:37:20
阅读次数:
217
IPC形式除了管道、FIFO、信号量以外,还有共享内存区和消息队列。这里主要堆共享内存进行介绍。
共享内存区是可用IPC形式中最快的。一旦这样的内存区映射到共享它的进程地址空间,这些进程间数据的传递就不再涉及内核。共享内存与其他进程通信方式相比较,不需要复制数据,直接读写内存,是一种效率非常高的进程通信方案。但它本身不提供同步访问机制,需要我们自己控制。在LINUX中,只要把共享内存段连接...
分类:
其他好文 时间:
2016-05-18 18:23:01
阅读次数:
209