zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    hibernate
    杨辉三角
    查看端口号
    一个线程同步问题的例子
    SQL关系数据库设计三大范式
    C#OpenFileDialog的使用
    莫队算法
    蒟蒻已知的高能数学公式
    C++ 产生随机数
    C++ 输出小数点后 n 位
  • 原文地址:https://www.cnblogs.com/li_shugan/p/boost.html
Copyright © 2011-2022 走看看