Linux
IvenShare
这个作者很懒,什么都没留下…
展开
-
Linux进程间的通信——信号量
Linux进程间的通信——信号量 信号量(semaphore)实际是一个整数,它的值由多个进程进行测试(test)和设置(set)。就每个进程所关心的测试和设置操作而言,这两个操作是不可中断的,或称“原子”操作,即一旦开始直到两个操作全部完成。测试和设置操作的结果是:信号量的当前值和设置值相加,其和或者是正或者为负。根据测试和设置操作的结果,一个进程可能必须睡眠,直到有另一个进程改变转载 2015-09-07 19:16:10 · 396 阅读 · 0 评论 -
线程同步
线程同步 多线程同步原因: 多线程相当于一个并发(concunrrency)系统。并发系统一般同时执行多个任务。如果多个任务可以共享资源,特别是同时写入某个变量的时候,就需要解决同步的问题。比如说,我们有一个多线程火车售票系统,用全局变量i存储剩余的票数。多个线程不断地卖票(i = i - 1),直到剩余票数为0。所以每个都需要执行如下操作: while (1) {转载 2015-09-07 10:18:33 · 318 阅读 · 0 评论 -
Linux信号
Linux信号 Linux以进程为单位来执行程序。我们可以将计算机看作一个大楼,内核(kernel)是大楼的管理员,进程是大楼的房客。每个进程拥有一个独立的房间(属于进程的内存空间),而每个房间都是不允许该进程之外的人进入。这样,每个进程都只专注于自己干的事情,而不考虑其他进程,同时也不让别的进程看到自己的房间内部。这对于每个进程来说是一种保护机制。(想像一下几百个进程总是要干涉对方转载 2015-09-07 10:14:10 · 282 阅读 · 0 评论 -
Linux进程间的通信——管道
Linux进程间的通信——管道 信号可以看作一种粗糙的进程间通信(IPC, interprocess communication)的方式,用以向进程封闭的内存空间传递信息。为了让进程间传递更多的信息量,我们需要其他的进程间通信方式。这些进程间通信方式可以分为两种: 管道(PIPE)机制。在Linux文本流中,我们提到可以使用管道将一个进程的输出和另一个进程的输入连接起转载 2015-09-07 11:08:08 · 386 阅读 · 0 评论 -
Linux进程间通信——消息队列
Linux消息队列 消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向其中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息 函数: 1.创建新消息队列或取得已存在消息队列 原型:int msgget(key_t key, int msgflg); 参数:转载 2015-09-07 18:23:59 · 275 阅读 · 0 评论 -
进程与线程
进程与线程 如同进程,线程由内核按时间分片进行管理。在单处理器系统中,内核使用时间分片来模拟线程的并发执行,这种方式和进程的相同。而在多处理器系统中,如同多个进程,线程实际上一样可以并发执行。 那么为什么对于大多数合作性任务,多线程比多个独立的进程更优越呢?这是因为,线程共享相同的内存空间。不同的线程可以存取内存中的同一个变量。所以,程序中的所有线程都可以读或写声明过的全局原创 2015-09-19 20:51:46 · 274 阅读 · 0 评论