发布时间:2012-12-17 18:27:10
当可能出现几个进程争用(读、写)同一个Critical Section的时候,加锁是常用的做法。 Linux加锁的方法,除了经典的IPC(Semophore)之外,记录锁(Record Locking)提供了更简单的方法。 其实记录锁的名字叫文件锁会比较贴切一点,因为其加锁和解锁都是通过对文件的操作完成的。 文件锁的粒度大可到整个文件,小可到一个字节,长度可变,但都可以说是对应一个Record(逻辑意义上)。 对锁的控制是通过调用fcntl实现的,基本的方式如下: fcntl(fd, operation, flock); fd是某个文件的句柄,该fd需要以与type......【阅读全文】
发布时间:2012-12-17 11:41:57
1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。 2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。 3)信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigactio......【阅读全文】
发布时间:2012-12-17 11:41:46
1.1理解通信协议的概念通信协议的两个特点:1.通信的流程 首先要能连接上服务器,连接上后,双方必须遵守严格约定的消息发送顺序,否则就无法保持双方的交流。2.通信消息格式的定义 客户端在连接通道上向服务器发送消息时,服务器必须知道凭什么来界定收到的数据算是“一条”消息? 打电话时,我们听到的一句话是根据中文的语法基础决定的。当两台机器通信时,这个规则必须定义明确,且双方遵守。多人聊天室开发过程中,大家容易犯这样的错误:如果客户端发送的消息不加上“\r\n”做一条消息的标识符,服务器就无法读到这条消息。 根据这个思路,可以和服务器约定......【阅读全文】
发布时间:2012-12-17 11:41:04
一. 信号量 l信号量: 解决进程之间的同步与互斥的IPC机制 多个进程同时运行,之间存在关联 •同步关系 •互斥关系互斥与同步关系存在的根源在于临界资源 •临界资源是在同一个时刻只允许有限个(通常只有一个)进程可以访问(读)或修改(写)的资源 –硬件资源(处理器、内存、存储器以及其他外围设备等) –软件资源(共享代码段,共享结构和变量等) •临界区,临界区本身也会成为临界资源 一个称为信号量的变量 •信号量对应于某一种资源,取一个非负的整型值 •信号量值指的是当前......【阅读全文】