生产者:不停地往队列中放数据
消费者:不停地从队列中拿数据
两者通过两个信号量同步
当生产者不再生产数据时,消费者正好挂在一个信号量上,处于睡眠状态,这时候pthread_join也会一直挂着的。该怎样使得消费者正常退出呢?
我的做法是让生产者在往队列中放一个【结束数据】,也就是一个标识,消费者拿到数据后,如果这个数据是结束标识则自杀退出。...
分类:
编程语言 时间:
2014-06-25 00:07:17
阅读次数:
225
在开发过程中,有三个独立运行的程序模块,三个模块都对sqlite数据库进行读写操作。sqlite在linux共享性较差,所以需要加入互斥信号量解决三个模块访问数据库该问题。另外,在加入信号量后,信号量sem初始化为1,如果三个模块任意一个在读或写数据库时ctrl+c掉(调试过程需要),有时会造成信号量sem保持sem_wait后的值,也就是为0;这就造成了死锁。...
分类:
系统相关 时间:
2014-06-21 20:22:06
阅读次数:
656
描述了一个Nucleus PLUS系统应用示例,包括application_initialization和六个任务,任务在application_initialization中创建。这个示例系统体现了Nucleus PLUS的任务调度和执行过程、任务间通信和同步(信号量、事件组)。...
分类:
其他好文 时间:
2014-06-21 20:19:30
阅读次数:
320
下面先对condition_impl进行简要分析。condition_impl在其构造函数中会创建两个Semaphore(信号量):m_gate、m_queue,及一个Mutex(互斥体,跟boost::mutex类似,但boost::mutex是基于CriticalSection的):m_mute...
分类:
其他好文 时间:
2014-06-20 20:11:44
阅读次数:
211
编程之美--多线程高效下载的问题2011-03-27 15:27:12分类:C/C++基本的思路: 这个问题相当于是生产者和消费者模型的问题 首先定义两个线程,一个是下载线程,一个是存储线程,下载线程将数据从网络上下载到相应的数据的缓冲区中(BLOCK组成的队列)。存储的线程从数据缓冲区中读取相应的...
分类:
其他好文 时间:
2014-06-18 15:41:28
阅读次数:
261
实时操作系统Nucleus Plus提供了6种进程间通信方式,分别为:邮箱(mailboxes)、消息队列(queues)和管道(pipes)、信号量(semaphores)、事件集(event groups)和消息(signals)。前三者用于进程间通信,后三者用于进程同步,本文总结了Nucleus Plus进程间通信方式。...
分类:
其他好文 时间:
2014-06-17 19:19:14
阅读次数:
268
Linux的通信方式主要有分类有下面几种:
-匿名管道和FIFO有名管道
-消息队列,信号量和共享存储
-套接字
.对于套接字的进程通信,我就留在套接字的文章中再写了.
一.管道
管道是最古老的进程通信机制了.提供进程间的单向通信.
1.创建管道
int pipe(int fdes[2]);
实际上管道通过参数返回读和写的两个文件描述符.相当于是打开了两个文件吧.但是这个文...
分类:
系统相关 时间:
2014-06-17 19:07:02
阅读次数:
339
1 #include "iostream" 2 #include "windows.h" 3 #include "cstring" 4 using namespace std; 5 6 HANDLE g_hSemThreads=INVALID_HANDLE_VALUE; 7 8 static ...
进程间通信 - IPC
Unix / Linux 系统基于多进程,进程和进程之间经常做数据的交互,这种技术叫进程间通信。
常见的IPC:
1)文件
2)信号
3)管道
4)共享内存
5)消息队列
6)信号量集
7)网络编程(socket)
... ...
其中,管道是最古老的IPC之一,目前较少使用。共享内存、消息队列和信号量集 遵循相同的规范,因此编码上有很多的共同点,...
分类:
其他好文 时间:
2014-06-16 19:43:14
阅读次数:
189
五、自旋锁(spinlock)
自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。
由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。
信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因...
分类:
系统相关 时间:
2014-06-15 16:34:46
阅读次数:
285