该程序使用boost线程库官方的demo修改而来,实现的功能很简单,主要是我学习两个线程使用队列进行通信使用。程序启动后创建了两个线程,一个用于每隔一秒向队列中加1个整数,另一个线程每隔1秒从队列主哦中取出一个整数。程序代码如下:
(1)、测试程序源代码:
/*
*File name:free_lock_queue.cpp
*Author:yingxianFei
*Date:2014-2-24
*Description:一个用于演示两个线程用队列进行数据交互的例子。一个线程用于每隔一秒向队列中添加数据,
一个线程用于每隔一秒从队列中读取数据,当添加完100个数据后等待7秒清空队列(此时线程2还在取数据),
该例子主要为了测试线程使用队列进行交互。
*/
#include <boost/thread/thread.hpp>
#include <boost/lockfree/queue.hpp>
#include <iostream>
#include <unistd.h>
#include <stdio.h>
#include <boost/atomic.hpp>
boost::lockfree::queue<int> queue(128);
const int iterations = 100;
void clear_queue();
/*
*Funcition:producer
*Description:一个用于每隔一秒向队列主添加数据并在添加完100组数据后等待7秒清空队列的线程处理函数
*Input:none
*Output:none
*/
void producer(void)
{
for (int i = 0; i != iterations; ++i) {
int value = ++producer_count;
while (!queue.bounded_push(value));
printf("\nadd %d\n",value);