一、进程/线程间同步机制。临界区、互斥区、事件、信号量四种方式临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源...
分类:
编程语言 时间:
2014-09-01 22:29:43
阅读次数:
284
1. 概述Posix IPC 包括:Posix消息队列、Posix信号量、Posix共享内存区Posix IPC在访问它们的函数和描述它们的信息上有一些类似点。本章讲述所有这些共同属性:用于标识的路径名、打开或创建时指定的标志、访问权限。Posix IPC 函数汇总2. IPC名字三种类型的Posi...
分类:
其他好文 时间:
2014-09-01 01:37:50
阅读次数:
342
1. 概述三种类型的System V IPC:System V 消息队列、System V 信号量、System V 共享内存区System V IPC在访问它们的函数和内核为它们维护的信息上共享许多类似点。本章讲述所有这些共同属性。下图汇总了所有System V IPC 函数2. key_t键、f...
分类:
其他好文 时间:
2014-09-01 01:37:22
阅读次数:
172
1. 概述2. 进程、线程与信息共享Unix进程间的信息共享有多种方式:注意下图中内核的位置 左边的两个进程共享存留于文件系统中某个文件上的某些信息。为访问这些信息,每个进程都得穿越内核。中间的两个进程共享存留于内核中的某些信息。管道、System V消息队列和System V信号量都是这种共享类型...
分类:
其他好文 时间:
2014-09-01 01:37:02
阅读次数:
316
此程序实现没有亲缘关系的两个进程间通过共享内存进行数据通信。
同时,使用信号量保证两个进程的读写同步:发送方在写共享内存时,接收方不能读数据;接收方在读数据时,发送方不能写数据。
1、fork创建子进程
2、使用二元信号量,同步读写端
fork_shm.c
#include
#include
#include
#include"send_recv.h"
int main(void)...
分类:
系统相关 时间:
2014-08-30 00:07:28
阅读次数:
330
Semaphore,即信号量的意思。是操作系统原始提供的内核同步对象。Semaphore semaphoreAcceptedClients = new Semaphore(2, 3,"Semaphore1");解释一下意思:第一个参数为:initialCount ,意指初始数量。Semaphore这...
分类:
编程语言 时间:
2014-08-29 18:03:48
阅读次数:
172
什么是回调?通常发生在需要两个角色即调用者与实现者的情形上,即我们希望当产生某个事件时,调用实现者定义的某个函数。当然这个概念很大,不是说操作系统的信号量,条件变量什么的,是在语言级别实现,如一个Framework提供商,规定了整个程序的框架,可能产生某事件时它希望调用某个行为,而这个行为的具体定义...
分类:
编程语言 时间:
2014-08-29 16:01:08
阅读次数:
820
一、ManualResetEvent 该对象有两种信号量状态True和False。构造函数设置初始状态。WaitOne:该方法用于阻塞线程,默认是无限期的阻塞,支持超时阻塞,如果超时就放弃阻塞,这样也就避免了无限期等待的尴尬;Set:手动修改信号量为True,也就是恢复线程执行;ReSet:重置.....
分类:
其他好文 时间:
2014-08-29 12:28:57
阅读次数:
409
在System V中,我们经常用用key_t的值来创建或者打开信号量,共享内存和消息队列。这个在IPC的环境中十分的重要,比如说,服务器创建了一个消息队列,等待 客户机发送请求。那么如何创建或者打开已有的消息队列呢?一般而言,我们对于服务器使用的路径和项目id(proj_id)是已知的,所以客户机可以获取
相同的key来打开 消息队列并进行操作。下面就是ftok的使用原型:
ftok函数
...
分类:
其他好文 时间:
2014-08-28 16:13:40
阅读次数:
654