使用c ++ 11的并发原语是否有一个像样的wait_any实现?

时间:2017-04-06 13:12:54

标签: c++ c++11 concurrency

使用c ++ 11的并发原语是否有一个像样的wait_any实现?

或如何在c ++ 11的互斥体,condition_variable,......?

中实现它

实现它的一般思路和算法是什么,不仅包括c ++ 11,还包括本机Linux系统调用和pthread?

wait_any正在等待向量/数组中的任何未来可用,或者要发出信号的多个condition_variables等等...

2 个答案:

答案 0 :(得分:1)

如果他们不使用操作系统工具来从CPU中取消等待线程,那么你只能对互斥和条件变量进行轮询(忙等待)实现。

此外,如果没有操作系统的参与,就不会出现强大的互斥或优先级反转缓解等问题。

答案 1 :(得分:1)

C ++ when_any中不存在

std

通常我最终会使用生产者 - 消费者的消息队列。任何提供者都可以在队列中排队消息(例如“我准备好了”)。

等待许多此类队列的许多线程最终都非常复杂。

实际上,您使用C ++ std原语构建内容,而不是直接在客户端代码中使用它们。