IPC是进程间通信的简称.传统上该术语描述的是运行在某个操作系统之上的不同进程间消息传递的不同方式.我们讨论分为四个领域:消息传递(管道,FIFO,消息队列(system v消息队列,posix消息队列));同步(互斥锁,条件变量,读写锁,信号灯)共享内存区(匿名共享内存区,有名共享内存区)过程调用...
分类:
系统相关 时间:
2014-10-11 19:06:56
阅读次数:
237
生产者,消费者问题是有关互斥锁(MutexLock)、条件变量(Condition)、线程(Thread)的经典案例;描述的问题可以叙述为 生产者往buffer中投放产品,而消费者则从buffer中消费产品。生产着消费者问题的难点在于:为了缓冲区数据的安全性,一次只允许一个线程进入缓冲区投放或者消费...
分类:
系统相关 时间:
2014-10-08 02:39:14
阅读次数:
304
这里,我们需要将缓冲区封装起来,然后让缓冲区与线程想连接,所以我们需要一个相应的接口。在Buffer中,我们需要想对应的一把锁与两个条件变量。当满足队列为空时,消费者等待,反之,生产者等待。Buffer的声明如下: 1 #ifndef BUFFER_H 2 #define BUFFER_H 3 4....
分类:
系统相关 时间:
2014-10-07 19:02:13
阅读次数:
278
本博文讨论Linux中的条件变量Condition的封装;条件变量Condition 主要描述的是 线程间 的同步,即协作关系。Linux中的条件变量通常涉及以下几个函数:int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *...
分类:
系统相关 时间:
2014-10-06 23:40:40
阅读次数:
377
本文对pthread_mutex_t 进行简易的封装;互斥锁主要用于互斥,描述的是一种竞争关系,主要是一个 一种资源或者代码, 在一段时间内 至多能被一个程序访问。而条件变量主要用于线程间同步, 描述的是一种协作关系。Linux中互斥锁的应用比较简单,通用的有以下几个函数:1 int pthread...
分类:
系统相关 时间:
2014-10-06 22:44:20
阅读次数:
241
声明代码如下: 1 #ifndef CONDITION_H 2 #define CONDITION_H 3 4 #include 5 #include "noncopyable.h" 6 7 class MutexLock; 8 9 10 class Condition : NonCopya...
分类:
系统相关 时间:
2014-10-06 22:00:00
阅读次数:
265
条件变量主要用于实现线程之间的协作关系。 pthread_cond_t常用的操作有: int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr);
int pthread_cond_signal(pthread...
分类:
系统相关 时间:
2014-10-06 19:16:50
阅读次数:
182
本篇我们将讨论线程Thread、互斥锁MutexLock、条件变量Condition的封装;说明:1、MutexLock、Condition利用构造函数和析构函数自动完成资源的申请和释放;2、MutexLock、Condition和Thread 都涉及到系统资源,这些类全部为不可复制的;例如,a程序...
分类:
系统相关 时间:
2014-10-06 18:49:20
阅读次数:
278
本文对Linux中的pthread_mutex_t做一个简易的封装。 互斥锁主要用于互斥,互斥是一种竞争关系,主要是某一个系统资源或一段代码,一次做多被一个线程访问。 条件变量主要用于同步,用于协调线程之间的关系,是一种合作关系。 Linux中互斥锁的用法很简单,最常用的是以下的几个函数: int ...
分类:
系统相关 时间:
2014-10-06 18:47:20
阅读次数:
188
最近用C++写安卓下的一个通讯程序,作为jni库给java调用,采用多线程轮询遇到一个问题描述如下:
A线程收到数据,放入队列,是生产者。
B、C、D若干个线轮询训消息队列,如果队列有数据就取出进行处理,没数据就Sleep(T)休息,问题是这个T值取多大合适?取大了消息处理不及时,取小了手机cpu上升电池很快耗光。
这个问题最佳解法是采用条件变量,可以比较完美解决问题...
分类:
编程语言 时间:
2014-09-29 22:17:21
阅读次数:
233