C++ 哪一个并发队列更快<&燃气轮机;vs mutex-ed队列<&燃气轮机;迭代期间
假设您希望迭代使用C++ 哪一个并发队列更快<&燃气轮机;vs mutex-ed队列<&燃气轮机;迭代期间,c++,algorithm,iterator,performance,containers,C++,Algorithm,Iterator,Performance,Containers,假设您希望迭代使用并发_queue和std:queue实现的队列中的所有项 由于在concurrent\u队列上没有迭代器,所以我只能认为我需要执行try\u pop()和push(),直到您弹出并重新推送concurrent\u队列中的所有项目 在多线程条件下,哪一个更有效?这样做,或者只使用队列的迭代器并使用critical section或其他互斥锁将其锁定 我知道just do test and benchmark可以回答我的问题,但我需要知道为什么一个线程比另一个更快。如果您在多线程环
并发_queue
和std:queue
实现的队列中的所有项
由于在concurrent\u队列上
没有迭代器,所以我只能认为我需要执行try\u pop()
和push()
,直到您弹出并重新推送concurrent\u队列中的所有项目
在多线程条件下,哪一个更有效?这样做,或者只使用队列的迭代器
并使用critical section或其他互斥锁将其锁定
我知道just do test and benchmark可以回答我的问题,但我需要知道为什么一个线程比另一个更快。如果您在多线程环境中,从队列中推送/pop来检查它,如果您在pop和推送操作之间切换上下文,其他线程不会看到不精确的数据吗?另一个线程可能会将另一个对象推离,因此第一个线程可能会错过它。。。等等
这太复杂了,充满了比赛条件。在进行迭代时,您必须锁定队列以保证数据的准确性
在这一点上,问题变成了:是锁定队列并使用迭代器更快,还是锁定队列并重复弹出/推送更快?我想你可以猜出哪一个是更好的选择:-)