具有多个使用者的线程队列

时间:2014-05-19 06:51:47

标签: c++ multithreading asynchronous

我正在使用线程队列,消费者从队列获取项目,生产者将项目放入队列。创建的消费者数量来自用户输入。我尝试了两种方法。第一个版本效果很好,但第二个版本没有。由于用户输入约束,我无法使用第一个版本。实际上我并没有得到两者之间的差异。第一个是同时创建三个线程而第二个是逐个创建吗?有什么线索吗?

auto c1 = async(launch::async, consumer);
auto c2 = async(launch::async, consumer);
auto c3 = async(launch::async, consumer);

for(int i = 1; i <= 3; i++)
    auto c1 = async(launch::async, consumer);

1 个答案:

答案 0 :(得分:1)

两者在某种程度上是相同的,因为它们都是一个接一个地启动三个异步任务。

在某种程度上,两者都是不同的,因为循环变量c1被限制在循环内的生命周期中,并且每次循环迭代时都会超出范围(并被破坏)。并且它可能会产生重大影响:对象c1被破坏,必须等待consumer函数完成才能被破坏。