如何使用boost::asio::spawn构建程序

How to build a program using boost::asio::spawn

本文关键字:构建 程序 spawn asio boost 何使用      更新时间:2023-10-16

如何构建一个使用boost lib的程序?

我无法构建使用boost::asio:spawn的示例.

  • G++ 版本:7.3

  • 提升库版本:1.69

法典:

#include <iostream>
#include <boost/asio.hpp>
#include <boost/asio/spawn.hpp>
int main ()
{
  boost::asio::io_service io_service;
  // Spawn coroutine.
  boost::asio::spawn(io_service,
    [&io_service](boost::asio::yield_context yield_context) {
      // Add more 'work' to the io_service.
      io_service.post([] {
        std::cout << "Other work" << std::endl;
      });
      // Wait on a timer within the coroutine.
      boost::asio::deadline_timer timer(io_service);
      timer.expires_from_now(boost::posix_time::seconds(1));
      std::cout << "Start wait" << std::endl;
      timer.async_wait(yield_context);
      std::cout << "Woke up" << std::endl;
    });
  io_service.run();
}

错误:

boost::asio::experimental::co_spawn has not been declared

我试图重现您的问题,但无法(使用与报告相同的版本)。

另请参阅Live On Wandbox(GCC7.3/boost1.69)。

以下是我用来构建的内容:

g++ -std=c++11 -pthread -I ~/custom/boost_1_69_0/ -L ~/custom/boost_1_69_0/stage/lib/ test.cpp -lboost_{thread,context,coroutine,system} -DBOOST_COROUTINES_NO_DEPRECATION_WARNING

这是一个猛烈的单行本:

g++ -std=c++11 -pthread -I /home/sehe/custom/boost_1_69_0/ -L /home/sehe/custom/boost_1_69_0/stage/lib/ test.cpp -lboost_thread -lboost_context -lboost_coroutine -lboost_system -DBOOST_COROUTINES_NO_DEPRECATION_WARNING