进程线程同步与通信
peter ren
这个作者很懒,什么都没留下…
展开
-
线程通信之无锁队列
什么是生产者消费者模式生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。 如图: 单生产者单消费者模型的队列操作过程是不需要进行加锁的。生产者通过写索引控原创 2015-12-18 16:25:46 · 796 阅读 · 0 评论 -
用管道实现线程驱动和通信
一,管道读写规则 当没有数据可读时O_NONBLOCK disable:read调用阻塞,即进程暂停执行,一直等到有数据来到为止。 O_NONBLOCK enable:read调用返回-1,errno值为EAGAIN。 当管道满的时候O_NONBLOCK disable: write调用阻塞,直到有进程读走数据 O_NONBLOCK enable:调用返回-1,errno值为EAGAIN所以原创 2015-12-21 17:38:41 · 683 阅读 · 0 评论 -
可重入函数
1.什么是可重入性?可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。下面示例一个为可重入,一个为不可重入:#include <stdlib.h>#include <stdio.h>#include <unistd.h>原创 2015-12-04 12:19:26 · 442 阅读 · 0 评论