进程间的通信(2)
有三种IPC我们称为XSI IPC,即消息队列、信号量以及共享存储器,它们之间有很多相似之处。
标识符和键
每个内核的IPC结构(消息队列、信号量或共享存储段)都用一个非负整数的标识符加以引用。例如,为了对一个消息队列发送或取消息,只需要知道其队列标识符。与文件描述符不同,IPC标识符不是小的整数。当一个IPC结构被创建,以后被删除时,与这种结果相关的标识符连续加1,知道...
分类:
系统相关 时间:
2014-05-15 07:16:02
阅读次数:
454
共享内存是两个或多个进程共享同一块内存区域,并通过该内存区域实现数据交换的进程间通信。虽然共享内存是进程间通信的最快速的机制,但是进程间的同步问题靠自身难以解决,于是就需要信号量机制,信号量能很好的解决互斥资源的同步问题。这些牵涉到操作系统里的知识,要好好研究一番同步互斥问题才能继续。
共享内存的工作模式一般是:
1. int shmget(key_t key, int size...
分类:
其他好文 时间:
2014-05-13 23:08:44
阅读次数:
763
接着上一篇博文,原来双线程,现在为了实现暂停/继续功能,又加了一个线程。第三线程使用条件信号量,当用户按下S键,第三线程将检测到,并且将ifpause置为1,然后输出线程将在if语句成立后被条件信号量cond阻塞。此时第三线程依然运行。当检测到按下R后,ifpause置为0,并且使..
分类:
编程语言 时间:
2014-05-13 01:02:13
阅读次数:
507
多线程编程之线程私有数据
Pthread是 POSIX threads 的简称,是POSIX的线程标准。
线程同步从互斥量【C/C++多线程编程之六】pthread互斥量,信号量【C/C++多线程编程之七】pthread信号量,条件变量【C/C++多线程编程之八】pthread条件变量,读写锁【C/C++多线程编程之九】pthread读写锁,多线程的同...
分类:
编程语言 时间:
2014-05-10 10:03:14
阅读次数:
446
进程间的通信(1)
进程间的通信IPC(InterProcessCommunication )主要有以下不同形式:
半双工管道和FIFO;全双工管道和命名全双工管道;消息队列,信号量和共享存储;套接字和STREAMS
管道
pipe函数
当从一个进程连接到另一个进程时,我们使用术语管道。我们通常是把一个进程的输出通过管道连接到另一个进程的输入。
管道是由调用pipe函数创建的:
#i...
分类:
系统相关 时间:
2014-05-09 22:33:56
阅读次数:
566
信号量的数据类型为结构sem_t,它本质上是一个长整型的数。函数sem_init()用来初始化一个信号量。它的原型为:
extern int sem_init __P((sem_t *__sem, int __pshared, unsigned int __value));
sem为指向信号量结构的一个指针;pshared不为0时此信号量在进程间共享,否则只能为当前进程的所有线程共享;...
分类:
其他好文 时间:
2014-05-07 05:05:19
阅读次数:
307
大家都一直强调规范编码,但是这个世界上有个大师们娱乐的竞赛——国际乱码大赛。
能写出来的都是对语言深入了解的master。我从没想自己也能“恶搞”C,一直都是老老实实编码。就在前几天看了一篇帖子。
感觉把很规范的代码变成乱码,很有意思。于是决定动手试一试。
我不得不说。。。我以为看起来还简单的东西,搞了我一天,我去。。。各种bug。。。不过也有很大的...
分类:
编程语言 时间:
2014-05-04 12:43:11
阅读次数:
513
多线程编程之条件变量
Pthread是 POSIX threads 的简称,是POSIX的线程标准。
互斥机制,包括互斥量【C/C++多线程编程之六】pthread互斥量,信号量【C/C++多线程编程之七】pthread信号量,互斥能很好的处理共享资源访问的协调问题,是多线程同步必不可少的机制。互斥机制也有其缺陷,当线程在等待共享资源满足某个条件,...
分类:
编程语言 时间:
2014-05-04 09:12:50
阅读次数:
348
多线程编程之信号量
Pthread是 POSIX threads 的简称,是POSIX的线程标准。
互斥量用来处理一个共享资源的同步访问问题,当有多个共享资源时,就需要用到信号量机制。
信号量机制用于保证两个或多个共享资源被线程协调地同步使用,信号量的值对应当前可用资源的数量。
1.信号量(samaph...
分类:
编程语言 时间:
2014-05-03 21:19:12
阅读次数:
477