Boost中的WaitForMultipleObjects功能

时间:2012-08-14 10:55:26

标签: boost

我需要在多平台项目中使用WaitForMultipleObjects的功能 我可以使用Boost来替换它吗?

1 个答案:

答案 0 :(得分:3)

我找到了这个问题的答案:不存在。

但我已在http://lists.boost.org/Archives/boost/2004/12/77175.php

找到并回答

希望对其他人有所帮助

等待一个条件并等待多个对象并不像乍一看那样密切相关。 条件不带状态,而您正在等待的句柄。条件只是表明状态发生了变化。具体地说是由互斥体保护的一个(一组)变量的状态变化。 您宁愿需要的是,当操作系统提供句柄更改状态时,会发出某种情况。我结束了创建一个小班级 “wfmo”,条件作为成员发出信号。该类具有添加的简单功能 操作系统处理,并在内部创建一个阻塞WaitForMultipleObjects的线程。 返回时它会发出信号。

这是有效的。但是我认为它确实只是以务实的方式解决了这个问题。 (而且我担心由于额外的线程而导致的运行时开销在某些情况下可能是不可忽略的。)要取消额外的线程,您需要修改 condition.wait()接受您正在等待的对象的句柄。在内部,等待当前使用WaitForSingleObject。 用WaitForMultipleObjects替换它们是一项简单的任务。 但是:您需要提供操作系统句柄!这打破了可移植性。 真正的问题是:Boost目前没有低级IO概念,它定义了它 自己的IO句柄等。 尽管这个主题已在名单上重复讨论,但仍有 没有提议(至少是正式的)解决这些问题。是的,有关于网络等的建议,但没有关于一般(低级)IO的建议。 (我认为,最重要的是,应该建立网络。)