我基本上是基于 ASIO 文档中的序列化示例构建一个共享库,我的意思是我正在使用 -shared 和 -fpic 选项进行编译以生成一个 .so 文件,其中包括挂钩/包装器。
我正在针对另一个进程运行我的共享库,然后我的代码通过库中的构造函数运行(如 Windows 上的 DLLMain)。
我知道我的代码正在执行,并且它运行良好,直到某一点。基本上我的问题涉及尝试将 ASIO 和我的网络代码放到另一个线程上。我正在使用以下代码来做到这一点:
asio::io_service io_service;
server server(io_service, port);
asio::thread t(boost::bind(&asio::io_service::run, &io_service));
现在,由于此代码在库中的构造函数中运行,因此引发了段错误,我不知道为什么。如果我将其替换为:
asio::io_service io_service;
server server(io_service, port);
io_service.run();
代码运行 100% 正常,除了它窃取了整个执行线程并且被挂钩的进程根本不会运行。有谁可以帮我离开这里吗?我真的很困惑。
干杯