使用c ++ 11的并发原语是否有一个像样的wait_any实现?
或如何在c ++ 11的互斥体,condition_variable,......?
中实现它实现它的一般思路和算法是什么,不仅包括c ++ 11,还包括本机Linux系统调用和pthread?
wait_any正在等待向量/数组中的任何未来可用,或者要发出信号的多个condition_variables等等...
答案 0 :(得分:1)
如果他们不使用操作系统工具来从CPU中取消等待线程,那么你只能对互斥和条件变量进行轮询(忙等待)实现。
此外,如果没有操作系统的参与,就不会出现强大的互斥或优先级反转缓解等问题。
答案 1 :(得分:1)
when_any
中不存在 std
。
通常我最终会使用生产者 - 消费者的消息队列。任何提供者都可以在队列中排队消息(例如“我准备好了”)。
等待许多此类队列的许多线程最终都非常复杂。
实际上,您使用C ++ std原语构建内容,而不是直接在客户端代码中使用它们。