首页 > 代码库 > C++ boost库无锁队列多线程并行测试与编译方法

C++ boost库无锁队列多线程并行测试与编译方法

阅读了网络中关于Boost库无锁队列的源代码,但却缺少编译方法。经过测试,确定了ubuntu 14.04中编译boost库的方法,特做记录。

无锁(free-lock)是实现高性能多线程并发编程的重要技术。

作为C++11 STL参考实现的boost库,不仅支持11标准,而且做了许多扩展,掌握其使用方法,对于提高代码质量,尤其重要。

以其多线程并行无锁队列为例,结合代码和说明,演示了无锁boost库的使用和编译方法。

代码及说明如下:

//source: boost_queue.cpp
//目的: 测试boost无锁队列的使用方法
//操作系统:ubuntu 14.04
//安装boost库命令:sudo apt-get install libboost-all-dev
//pubdate: 2015-1-31   当前boost-dev版本是1.54
//编译命令: g++ boost_queue.cpp -lboost_thread -lboost_system
//boost include位置: /usr/include/boost
//boost lib位置: ls /usr/lib/x86_64-linux-gnu/ | grep 'boost'
#include <boost/thread/thread.hpp>
#include <boost/lockfree/queue.hpp>
#include <iostream>
#include <boost/atomic.hpp>

using namespace std;

//生产数量
boost::atomic_int producer_count(0);
//消费数量
boost::atomic_int consumer_count(0);
//队列
boost::lockfree::queue<int> queue(512);

//迭代次数
const int iterations = 1000000;
//生产线程数
const int producer_thread_count = 4;
//消费线程数
const int consumer_thread_count = 2;

//生产函数
void producer(void)
{
    for (int i = 0; i != iterations; ++i) {
    	//原子计数————多线程不存在计数不上的情况
        int value = http://www.mamicode.com/++producer_count;>

C++ boost库无锁队列多线程并行测试与编译方法