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

  • 相关阅读:
    19-background
    18-超链接导航栏案例
    17-文本属性和字体属性
    16-margin的用法
    15-浮动
    14-块级元素和行内元素
    13-标准文档流
    12-简单认识下margin
    11-border(边框)
    10-padding(内边距)
  • 原文地址:https://www.cnblogs.com/li_shugan/p/boost.html
Copyright © 2011-2022 走看看