Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 工作队列的这种变体是某种模式还是公共结构?_C++_Boost - Fatal编程技术网

C++ 工作队列的这种变体是某种模式还是公共结构?

C++ 工作队列的这种变体是某种模式还是公共结构?,c++,boost,C++,Boost,我想知道以下概念是否被称为编程模式 设想一个工作队列,但不是在处理时删除每个队列条目,而是在另一个线程捕获删除事件或触发删除事件时删除它 所以它是这样的: 命令进入队列 第二个命令进入队列 第三 处理第一个命令 第一个命令等待删除 处理第二个命令 已触发第一个命令的删除事件 第一个命令被删除 第二个命令等待删除 我希望,我已经说得很清楚了 现在是否有一个boost库实现了这种行为?是否有一种模式代表这种行为 据我所知,您所说的只是两个队列——“新奇”的一个队列是等待删除的队列。标准队列(d

我想知道以下概念是否被称为编程模式

设想一个工作队列,但不是在处理时删除每个队列条目,而是在另一个线程捕获删除事件或触发删除事件时删除它

所以它是这样的:

  • 命令进入队列
  • 第二个命令进入队列
  • 第三
  • 处理第一个命令
  • 第一个命令等待删除
  • 处理第二个命令
  • 已触发第一个命令的删除事件
  • 第一个命令被删除
  • 第二个命令等待删除
我希望,我已经说得很清楚了


现在是否有一个boost库实现了这种行为?是否有一种模式代表这种行为

据我所知,您所说的只是两个队列——“新奇”的一个队列是等待删除的队列。标准队列(deque)应该可以。您需要一个互斥锁和一个条件变量来通知删除事件。想要为这样一种模式命名有点梯度(人们现在期望的太多了)。。。如果我在描述它,我可能会说我们有一个解耦的删除线程(假设这就是您实现它的方式)、一个异步删除过程(类似地),甚至是延迟的元素删除(即使不是在单独的线程中完成也是如此)。

看起来非常复杂,为什么不立即删除该命令呢?目的是什么?目的是,命令必须得到确认。每个命令将产生相应的响应。但是,我想处理另一个命令,直到响应到达或超时“重新激活”要重新发送的命令。如何防止命令被分配两次?啊,是的,但是关于使用一些指示符字段,比如2d数组,拥有命令和状态——但托尼的想法似乎是一个更好的尝试。我觉得你想要一个单独的队列,而且处理起来有点复杂。事实上,托尼的想法更容易实现,也更快。如果你想使用多线程,它也是更好的选择。感谢这一点——它证实了我的直觉,但自从我使用boost并寻找设计模式以来,我就把事情复杂化了。我会用它来试验,如果没有更好的东西出现,这就是它。