在linux下用boost :: thread创建一个boost :: asio工作线程

时间:2012-09-25 06:04:12

标签: c++ boost boost-asio boost-thread

我一直在windows下使用boost一段时间,现在需要迁移一些现有的应用程序才能在Ubuntu 12上运行以进行演示。这个应用程序创建了两个工作线程,一个用于记录传入的UDP数据,另一个用于侦听单独的端口并将该数据打印到屏幕上。

我已经完成了其他所有工作,但由于某种原因,以下行失败并出现“boost :: asio :: io_service :: run”的无效重载错误

m_logThread = new boost::thread( boost::bind( &boost::asio::io_service::run, m_ioServicePtr ));

这行在我的Win32机器上工作正常,但在linux上给出了无效的重载错误。

还有另外两个错误:

boost::bind is ambiguous

type boost::thread could not be resolved

但我很确定它们源于另一个错误。我肯定包括boost头文件,因为编译器并没有抱怨我的类指向IO服务和Threads作为成员变量,它只是应该产生工作线程的那一行。

我相信我已经正确安装了升级版,因为它对标题位置非常满意。

非常感谢提前。

1 个答案:

答案 0 :(得分:3)

错误是boost::asio::io_service::run超载,在这种情况下你必须resolve the ambiguity