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. 多个不同的app应用间应该如何进行消息推送呢?

    现在很多公司做app应用都会用到推送,推送这个不多说了,怎么做网上一堆,用的比较多的还数极光推送(Jpush)以及百度推送,目前我们使用Jpush,文档方面质量是差了点..这个先不吐槽,主要现在的ap ...

  2. 2.一个EJB的小Demo

    新建一个java普通项目即可 这里用到了Jboss,需要安装Jboss,然后进入jboss-4.2.3.GA\client目录,拷贝所有的jar包到本项目的lib下. 3个接口分别如下所示: publ ...

  3. jenkins, ant, pmd持续集成

    http://pmd.sourceforge.net/pmd-5.0.3/ant-task.html 在jenkins , ant , pmd进行集成的时候,build.xml模板如下,在网上找了一些 ...

  4. 三种方法查看MySQL数据库的版本

    1.使用-V参数 首先我们想到的肯定就是查看版本号的参数命令,参数为-V(大写字母)或者--version 使用方法: D:\xampp\mysql\bin>mysql -V 或者 D:\xam ...

  5. BZOJ 1853 【Scoi2010】 幸运数字

    Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认 为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,666,8 ...

  6. js和jquery如何获取图片真实的宽度和高度

    按照插入的图片的尺寸来判断图片是横图还是竖图.然后判断过后给予不同的展示方式,下面为大家介绍下js和jquery如何获取图片真实的宽度和高度   1.什么时候需要获取图片真实的宽度和高度 在做pc网页 ...

  7. Editplus常用快捷键

    EditPlus 快捷键的使用 如果一个来你们公司面试程序员,连Ctrl + C 和Ctrl + V 都不用,而是使用“选中文本”→ 鼠标右键 → [复制],然后再鼠标右键→ [粘贴].你会不会录用他 ...

  8. Win10 UWP 开发学习代码(不断更新)

    页面之间跳转(传值) string txt = "Spring Lee"; this.Frame.Navigate(typeof(BlankPage1),txt); 另一个页面接收 ...

  9. WPF中RadioButton绑定数据的正确方法

    RadioButton一般用于单选的时候,也就是从一组值中选择一个值. 比如性别有“男”和“女”两种取值,而对于一个员工的实例来说,性别的取值要么是男,要么是女. 这种时候一般就会用到RadioBut ...

  10. no result defined for action

    1.no result defined for action .......and result input    或者 no result defined for action .......and ...