- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我注意到TBB concurrent_bounded_queue blocking pop没有超时。我们正在从另一个我们有时间等待的实现转移到 TBB,因此在这里寻找相同的功能。
无论如何,定时等待通常很有用,我们将不胜感激任何建议。
谢谢
最佳答案
According to Arch Robinson ,TBB 的架构师,超时从来都不是优先事项:
The initial design of TBB targeted a paradigm of task-based programming for parallel speedup. It is what I think of as "classical" parallel algorithms like parallel_for, parallel_reduce, etc.The containers and mutexes were designed with that in mind; i.e., to avoid race conditions.Blocking was expected to be short, otherwise the program would not scale. Therefore timeouts were not a priority.
有一个 old article其中一位 TBB 工程师讨论了定时互斥体。您可能无法直接使用此处描述的变通方法,但它可以帮助您自己实现阻塞出列,基于 concurrent_queue
不阻塞 try_pop
.
我不希望性能接近仅使用 TBB 队列的性能,而且它不会那么微不足道(可能超过 100 LOC),但如果你真的想要它,它是可以做到的。
附言Java BlockingQueue
样式的带超时的阻塞轮询/提议是您可能不想在快速路径上使用的东西。有几次我用这种方法开始实现,只是在一段时间后才发现(没有双关语意),生产者/消费者的压力是不够的,只是阻塞至少是有效的,或者我需要调查发生了什么并重新考虑我的代码的某些部分。
关于C++ TBB concurrent_bounded_queue - 弹出超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36233391/
我是一名优秀的程序员,十分优秀!