boost.asio与boost.log同时使用导致socket不能正常收发数据

现象:

1。 没有使用boost.log前能正常收发数据

2。加入boost.log后async_connect没有回调

fix过程:

1. gdb调试发现程序block在pthread_timed_wait.死锁? 使用helgrind没有检查出异常.

2. 难道是内存错误? valgrind的memcheck也没有发现异常

3. 重新编译boost为debug版, gdb调试发现 task_io_service的op_queue_works_的内存地址在使用boost.log前后居然从63070变成了63078。查看task_io_service.hpp发现一个outstanding_works_ 的原子变量。 在使用boost.log 前后ptype outstanding_works_发现没有使用boost.log是为std::atomic,而使用boost.log 后居然变成了boost::atomic.

解决办法:

1. 在编译程序时使用-DBOOST_ASIO_DISABLE_STD_ATOMIC

2. 重新编译boost. ./b2 -a cxxflags=‘-std=c++11‘ variant=debug install

boost.asio与boost.log同时使用导致socket不能正常收发数据

上一篇:在打包程序中自动安装SQL Server数据库 .


下一篇:[原] MSSQL MDF文件太大问题