随笔分类 -  C++

boost c++
(原创)c++11改进我们的模式之改进单例模式
摘要:我会写关于c++11的一个系列的文章,会讲到如何使用c++11改进我们的程序,本次讲如何改进我们的模式,会讲到如何改进单例模式、观察者模式、访问者模式、工厂模式、命令模式等模式。通过c++11的改进,我们的模式变得更通用、更简洁、更强大。本次讲如何改进单例模式。在c++11之前,我们写单例模式的时候... 阅读全文

posted @ 2013-06-19 21:29 qicosmos(江南) 阅读(17690) 评论(3) 推荐(7) 编辑

(原创)C++半同步半异步线程池
摘要:c++11 boost技术交流群:296561497,欢迎大家来交流技术。线程池可以高效的处理任务,线程池中开启多个线程,等待同步队列中的任务到来,任务到来多个线程会抢着执行任务,当到来的任务太多,达到上限时需要等待片刻,任务上限保证内存不会溢出。线程池的效率和cpu核数相关,多核的话效率更高,线程... 阅读全文

posted @ 2013-05-30 13:35 qicosmos(江南) 阅读(4594) 评论(0) 推荐(0) 编辑

(原创)C++ 同步队列
摘要:同步队列作为一个线程安全的数据共享区,经常用于线程之间数据读取,比如半同步半异步线程池的同步队列。其实做起来比较简单,要用到list、锁和条件变量,条件变量的作用是在队列满了或者空了的时候等待通知。先看一个简单的同步队列:#include #include #include #include #in... 阅读全文

posted @ 2013-05-30 13:24 qicosmos(江南) 阅读(3845) 评论(2) 推荐(1) 编辑

(原创) 一个通用的C++ 消息总线框架
摘要:c++11 boost技术交流群:296561497,欢迎大家来交流技术。应用开发过程中经常会处理对象间通信的问题,一般都是对象或接口的依赖和引用去实现对象间的通信,这在一般情况下是没问题的,但是如果相互通信的对象很多,可能会造成对象间的引用关系像蜘蛛网一样,这样会导致对象关系很复杂,难以维护的问题,解决这个问题的一个好方法是通过消息总线去解耦对象间大量相互引用的紧耦合的关系。设计思路:被通信对象向消息总线发布一个主题,这个主题包含消息主题、消息类型和消息处理函数,消息主题标示某个特定的主题,消息类型用来区分标示这个主题会响应某个特定的消息,消息处理函数用来响应该主题的某种消息类型。通信对象向 阅读全文

posted @ 2013-04-28 11:35 qicosmos(江南) 阅读(9302) 评论(2) 推荐(3) 编辑

(原创)C++ IOC框架
摘要:C++里面缺少一些有用的框架比如说AOP和IOC等,AOP框架的实现在前面的博文中已介绍了,现在介绍IOC框架。IOC即控制反转,它的思想是由IOC容器来管理对象的生命周期、依赖关系等,从而使得应用程序的配置和依赖性规范与实际的应用程序代码分开。其中一个特点就是通过文本的配置文件进行应用程序组件间相... 阅读全文

posted @ 2013-04-22 10:50 qicosmos(江南) 阅读(8160) 评论(7) 推荐(1) 编辑

(原创)一个log4cpp帮助类
摘要:引用log4cpp头文件和lib文件后,通过一个帮助类来输出日志,帮助类中定义了一些静态方法,实现日志的输出,使用起来很简单。代码如下:#include #include #include #include using namespace log4cpp;#include #include boost::once_flag g_call_once=BOOST_ONCE_INIT;class Logger : boost::noncopyable{private: Logger(void){} static void Init() { #if _DEBUG ... 阅读全文

posted @ 2013-04-15 14:03 qicosmos(江南) 阅读(1470) 评论(1) 推荐(0) 编辑

(原创) C++ 轻量级AOP框架
摘要:c++11 boost技术交流群:296561497,欢迎大家来交流技术。c++中开源的AOP框架AspectC++需要单独编译才能将切面的代码织入到核心逻辑代码中,感觉使用起来不方便,不能满足快速开发要求。我希望只要实现方法拦截即可,能织入before()和after()操作就行,不追求动态织入。思路是这样的,通过一个包装类,里面定义before()和after()方法,和->运算符重载方法,在重载操作函数中实现before()和after()操作。具体代码如下:BaseAspect 1 #include 2 3 template 4 class BaseAspect 5 { 6 pr 阅读全文

posted @ 2013-04-07 10:17 qicosmos(江南) 阅读(8145) 评论(5) 推荐(1) 编辑

c++ lamda表达式调用自身实现定时器
摘要:刚好要做一个定时器,用asio的deadline_timer,通过异步等待方式去做,超时后重新设置超时时间再重新异步等待。将lamda表达式放到function中,异步等待的时候再调用自身。具体代码如下:timer t;io_service ios;deadline_timer dt(ios, posix_time::seconds(2));cout<<dt.expires_at()<<endl;std::function<void()> f=[&](){dt.async_wait([&](system::error_code er){cou 阅读全文

posted @ 2013-04-03 14:31 qicosmos(江南) 阅读(1358) 评论(0) 推荐(0) 编辑

导航