- 博客(8)
- 资源 (1)
- 收藏
- 关注
原创 boost线程同步(2)——条件变量(POSIX)
boost是一个优秀的跨平台c++库,既然是跨平台那么它肯定封装了许多与具体的操作系统相关的内容。比如,windows和linux在文件系统、线程操作等等上有许多的不同之处,而boost封装了其中的差异,以一种统一的方便用户操作的形式展现出来。 简单易用是一方面,还有一方面是boost既支持原有操作系统的功能,又在其上进行了扩展,使C++变得更加强大。 今天我们谈谈boost对条件变量的
2016-06-02 23:30:15 653
原创 BOOST锁机制(1)
首先来看几个例子,这个几个例子都是错误的使用boost的mutex。根本原因是对加锁原理认识不清楚。 BAD1: ShareData.h用于定义共享数据#ifndef __SHARE_DATA_H__ #define __SHARE_DATA_H__namespace BOOST_TEST { class CShareData { public: CSha
2016-06-01 00:28:41 458
原创 RAII(资源创建即释放)
RAII是一种技术,利用了C++局部对象在跳出作用域时执行析构函数的机制,将一些资源的释放安排在析构函数中,保证安全的使用资源。 举个例子: A.h class A { public: A(int size); virtual ~A(); public: void SetMem(int size, char va
2016-05-31 22:44:27 400
原创 一种双向链表设计方法(C++)
leveldb源码实现的双向链表。 设计思想: <1>链表由表头和表元素构成 <2>表头是一个特殊的表元素 <3>元素从表尾插入 链表实现:class SnapshotImpl; class SnapshotList { public: SnapshotList() { list_.prev_ = &list_; list_.next_
2016-05-24 23:47:14 386
原创 boost的shared_ptr循环引用(1)
A.h #include "B.h" class A { public: A(); virtual ~A(); public: BPtr m_ptrB; } typedef boost::shard_ptr<A> APtr; B.h class B { public: B(); virtual ~
2016-05-19 23:43:02 277
原创 创建一个基于套接字的bufferevent实例-echo程序的实现
在libevent的官方文件中指出bufferevent有四种类型,分别如下: (1)基于套接字的bufferevent (2)异步IObufferevent (3)过滤型bufferevent (4)成对的bufferevent 在本文中,我们只介绍基于套接字的bufferevent,这种类型的bufferevent是使用最多的。剩下的三种类
2014-12-29 16:12:42 2491
原创 libevent之bufferevent的基本结构
在bufferevent出现之前,我们通常先检测数据源输入buffer内是否有数据,如果有数据那么就将其中的数据写入到自己定义的缓冲区中。这样可能会发生频繁读写的问题。如果我们希望数据源中输入buffer积攒到一定量数据的时候再进行读写,那么就需要使用bufferevent了。图1显示了不使用bufferevent时对数据源进行读写的结构。 图1 不使用buffere
2014-12-25 13:48:33 881
原创 libevent之bufferevent概述
libevent将它所看到的一切都看做事件来处理,这次我们经常使用的读写缓冲区也未能幸免。那么为什么libevent会把读写缓冲区加入到它的事件机制中呢?在回答这个问题之前,首先看一下客户端网络套接口的读写事件。我们用一段话来描述它: 客户端创建套接口,对套接口进行设置,然后调用connect连接到服务器端。如果连接成功,并且套接口可读、可写或者发生错误,那我们就执行相应的操作。 那么
2014-12-24 22:45:33 491
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人