1.vs2005调试

http://blog.csdn.net/u010797208/article/details/40452797

2.macbook ace编译

http://www.jianshu.com/p/adc5938905f0

小坑:

源代码clockid_t重命名

GNUmakefile去掉SSL-target

http://blog.csdn.net/hpulizhen/article/details/49518677

http://blog.renren.com/share/251664336/7792179642

3.ACE

先分析一下ACE_wrappers\examples\Reactor\Proactor\test_proactor2.cpp的代码,

#if defined (ACE_WIN32) && !defined (ACE_HAS_WINCE)

  ACE_WIN32_Proactor *      pImpl = new ACE_WIN32_Proactor;

#elif defined (ACE_HAS_AIO_CALLS)

  //  ACE_POSIX_AIOCB_Proactor *  pImpl = new ACE_POSIX_AIOCB_Proactor;
ACE_POSIX_SIG_Proactor * pImpl = new ACE_POSIX_SIG_Proactor;
#endif ACE_Proactor Proactor ( pImpl , ); ACE_Proactor::instance( & Proactor );
ACE_INLINE int
ACE_Proactor::run_event_loop (void)
{
ACE_TRACE ("ACE_Proactor::run_event_loop");
ACE_Proactor *p = ACE_Proactor::instance (); if (p == )
return -; return p->proactor_run_event_loop (ACE_Proactor::check_reconfiguration);
}
int
ACE_Proactor::proactor_run_event_loop (PROACTOR_EVENT_HOOK eh)
{
ACE_TRACE ("ACE_Proactor::proactor_run_event_loop");
int result = ; {
ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, mutex_, -)); // Early check. It is ok to do this without lock, since we care just
// whether it is zero or non-zero.
if (this->end_event_loop_ != )
return ; // First time you are in. Increment the thread count.
this->event_loop_thread_count_ ++;
} // Run the event loop.
for (;;)
{
// Check the end loop flag. It is ok to do this without lock,
// since we care just whether it is zero or non-zero.
if (this->end_event_loop_ != )
break; // <end_event_loop> is not set. Ready to do <handle_events>.
result = this->handle_events (); if (eh != && (*eh) (this))
continue; if (result == -)
break;
} // Leaving the event loop. Decrement the thread count. {
// Obtain the lock in the MT environments.
ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, mutex_, -)); // Decrement the thread count.
this->event_loop_thread_count_ --; if (this->event_loop_thread_count_ >
&& this->end_event_loop_ != )
this->proactor_post_wakeup_completions ();
} return result;
}
int
ACE_Proactor::handle_events (void)
{
return this->implementation ()->handle_events ();
}

创建Proactor 时传入pImpl ,调用ACE_Proactor::run_event_loop ()  -> ACE_Proactor::proactor_run_event_loop(...)  ->

ACE_Proactor::handle_events(), handle_events函数里还是调用pImp。

Proactor在windows上有实现,在其他平台也有实现,单独一个ACE_Proactor_Impl,然后继承实现是能理解的。将pImpl传入Proactor,Proactor很多方法实现就只是调用pImpl的相同函数而已,只是一种封装方式而已。

在其他项目中也有类似的封装,目的各有不同。

1.PlayContext和Play,应该只是把PlayContext的其他属性和方法隐藏

2.ACE_Refcounted_Auto_Ptr和ACE_Refcounted_Auto_Ptr_Rep, ACE_Refcounted_Auto_Ptr_Rep包含了引用计数,多个ACE_Refcounted_Auto_Ptr使用同一个ACE_Refcounted_Auto_Ptr_Rep

3.ACE_Proactor和ACE_Proactor_Impl,

第3月第11天 vs2005调试 ace编译的更多相关文章

  1. 【安富莱】【RL-TCPnet网络教程】第11章 RL-TCPnet调试方法

    第11章      RL-TCPnet调试方法 本章节为大家讲解RL-TCPnet的调试方法,RL-TCPnet的调试功能其实就是通过串口打印实时监控运行状态.而且RL-TCPnet的调试设置比较简单 ...

  2. VS2005调试无法进入断点,暂停、停止、重编按钮为灰色

    没装IE8之前(IE7),Vs2005调试还好用,装了IE8之后, Vs2005的WebSite程序按F5无法正常调试. 需要手动附加到进程, 比较麻烦, 据说还有种方法, 把所有IE窗口都关掉, 再 ...

  3. 2014年11月17~11月18日,杨学明老师《企业IT需求收集和实施》内训在湖南长沙某酒店成功举办!

    2014年11月17至18日,受湖南某软件企业的邀请,杨学明老师<企业IT需求收集和实施>内训在某长沙某五星级酒店成功举办!来自全国各地的IT高管和企业负责人参加了此次培训.杨学明老师分别 ...

  4. VS2005 调试不能设置断点的解决办法

    [ 1] 以前也遇到过同样的问题,但没有问个为什么,也没有探个毕竟.昨天调试一个DLL,添加输出信息吧,太麻烦而且不轻易定位, 但设置断点后按“F5”,断点不可用,气泡提示“当前不会命中断点,还没有为 ...

  5. VS2005调试时无法找到调试信息解决方法

    调试C++程序的时候出现,无法找到.exe的调试信息,或者调试信息不匹配.未使用调试信息生成二进制文件.解决方法:打开菜单项目->项目属性页: 1.选择配置属性->链接器->调试-& ...

  6. 最全Pycharm教程(11)——Pycharm调试器之断点篇

    最全Pycharm教程(1)--定制外观 最全Pycharm教程(2)--代码风格 最全Pycharm教程(3)--代码的调试.执行 最全Pycharm教程(4)--有关Python解释器的相关配置 ...

  7. 2018.3.11 Java DEBUG 调试的方法

    F5:Step Into:跳进当前执行的方法中 F6:Step Over:跳过该行继续执行 F7:Step Return:从方法中跳出继续执行 F8:Resume:全部运行通过,从调试状态恢复 Ctr ...

  8. SharpPcap网络包捕获框架的使用--实例代码在vs2005调试通过

    转自:http://hi.baidu.com/boyxgb/blog/item/89ac86fbdff5f82c4e4aea2e.html 由于项目的需要,要从终端与服务器的通讯数据中获取终端硬件状态 ...

  9. 第30月第11天 Xcode 9.0中新增的API版本检查@available

    1.Xcode 9.0中新增的API版本检查@available https://www.jianshu.com/p/0a94baa6c3dd https://www.jianshu.com/p/b8 ...

随机推荐

  1. Caffe源码解析3:Layer

    转载请注明出处,楼燚(yì)航的blog,http://home.cnblogs.com/louyihang-loves-baiyan/ layer这个类可以说是里面最终的一个基本类了,深度网络呢就是 ...

  2. SDN:motivation

    今天公交车上看了会SDN一本介绍性的书籍,具体名字不记得了.我想,我已经在实验室呆了很久的时间的,接触SDN也有一段时间了.对SDN的一些基本的知识还是需要好好整理一番.当然,这里只是一个随笔,想到什 ...

  3. 洛谷CON1041 NOIP模拟赛一试

    A T2-power of 2 题目描述 是一个十分特殊的式子. 例如: n=0时 =2 然而,太大了 所以,我们让对10007 取模 输入输出格式 输入格式: n 输出格式:  % 10007 输入 ...

  4. java Socket编程-基于UDP

    package com.wzy.UDPTest; import java.net.DatagramPacket; import java.net.DatagramSocket; import java ...

  5. ubuntu 14.04 ns2.35 ***buffer overflow detected **: ns terminated解决办法

    1.按照如下教程安装 Install With Me !: How to Install NS-2.35 in Ubuntu-13.10 / 14.04 (in 4 easy steps) 2.运行一 ...

  6. Warning: file_put_contents(data.txt): failed to open stream: Permission denied in /Library/WebServer/Documents/test.php on line 22

    最近在学习PHP 在保存文件的时候报Warning: file_put_contents(data.txt): failed to open stream: Permission denied in ...

  7. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 适合大型企业信息化应用使用的角色权限管理体系

    每个人外表看看都没什么大区别.但是内在的知识.处理问题的能力.解决问题的能力.头脑灵活性都会有很大的差距.软件组件也是一样,有些组件编写厉害,想问题深入,能处理的难题也多,构思巧妙. 通用快速开发平台 ...

  8. 再读《C++ Primer》——变量和基本类型

    刚上大学那时,几个室友一块买了本<C++ Primer>第4版,看了一遍后就没怎么碰了,偶尔拿出来翻翻,当作工具书使用.后来知道有第5版了,一直觉得内容差不多吧.直到最近,再读其中的一些内 ...

  9. CDH安装

    离线安装Cloudera Manager 5和CDH5(最新版5.1.3) 完全教程 关于CDH和Cloudera Manager CDH (Cloudera's Distribution, incl ...

  10. 使用antd UI 制作菜单

    antd 主页地址:https://ant.design/docs/react/introduce 在使用过程中,不能照搬antd的组件代码,因为有些并不合适.首先,菜单并没有做跳转功能,仅仅是菜单, ...