tbb concurrent_queue 示例

tbb concurrent_queue 示例


2024年4月20日发(作者:)

TBB (Threading Building Blocks) 是一款由Intel开发的C++并行编

程库,其中的concurrent_queue是用于多线程并发操作的队列容器。

在本文中,我们将通过一个简单的示例来探讨如何使用TBB的

concurrent_queue。

1. 简介

TBB是为了简化并行编程而设计的,它提供了一系列的并行算法和数

据结构,以及一个方便的任务调度器。concurrent_queue是其中的

一个重要组件,它实现了一个线程安全的队列容器,可以用于在多线

程环境中进行数据共享。

2. 示例

下面我们以一个生产者-用户模型为例,来演示如何使用TBB的

concurrent_queue。

```cpp

#include

#include

#include

#include

int m本人n() {

tbb::concurrent_queue q;

// 生产者线程

tbb::parallel_for(0, 100, [](int i) {

(i);

});

// 用户线程

tbb::parallel_for(0, 100, [](int i) {

int value;

while(!_pop(value)) {

// 队列为空时重试

}

std::cout << "Consumer " << i << " get value " << value

<< std::endl;

});

return 0;

}

```

在这个示例中,我们首先创建了一个concurrent_queue对象q,然

后启动了两个并行的任务。第一个任务是生产者线程,它往队列中依

次插入100个整数;第二个任务是用户线程,它从队列中获取数据并

打印出来。值得注意的是,我们使用了tbb::parallel_for来执行并行

任务,这样可以让TBB自动管理线程池和任务调度。

3. 运行结果

当我们编译并运行上面的示例代码时,可以得到类似如下的输出:

```

Consumer 0 get value 0

Consumer 1 get value 1

Consumer 2 get value 2

...

```

从输出结果可以看出,生产者线程成功地向队列中插入了100个整数,

并且用户线程也成功地从队列中获取了这些数据并进行了处理。

4. 总结

通过以上示例,我们演示了如何使用TBB的concurrent_queue来实

现多线程并发操作。TBB提供了丰富的并行算法和数据结构,可以极

大地简化并行编程的工作量,同时也提高了程序的性能和可维护性。

希望本文能对大家理解TBB并行编程有所帮助。


发布者:admin,转转请注明出处:http://www.yc00.com/web/1713568762a2274950.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信