自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

转载 多线程下变量-gcc原子操作 __sync_fetch_and_add等

非常好的原子操作,不用加锁:__sync_fetch_and_addGCC 提供的原子操作gcc从4.1.2提供了__sync_*系列的built-in函数,用于提供加减和逻辑运算的原子操作。其声明如下:type __sync_fetch_and_add (type *ptr, type value, ...)type __sync_fetch_and_sub

2017-02-23 08:05:34 519

转载 BOOST_STATIC_ASSERT与assert的区别

转自:点击打开链接assert是运行期断言,也就是在编译期出现的错误,它不会提示;而boost中的BOOST_STATIC_ASSERT是在编译期的断言,也就是说在编译的时候就可以断言出错误。比如下面的函数:[cpp] view plain copy void expects_ints_to_be_4bytes()  {  B

2017-02-23 05:22:40 300

原创 cmake 使用

CMake 简介CMake 是一个跨平台的自动化建构系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程,可以产生标准的构建文件,如 Unix 的 Makefile 或Windows Visual C++ 的 projects/workspaces 。文件 CMakeLists.txt 需要手工编写,也可以通过编写脚本进行半自动的生成。CMake 提供了比 autoco

2017-02-21 20:09:39 221

原创 (void)sizeof(type_must_be_complete)检查不完全类型

检查不完全类型:举例如下//BB.h#include 2 class BB 3 { 4 public: 5 BB() 6 { 7 std::cout<<"BB"<<std::endl; 8 } 9 ~BB() 10 { 11 std::cout<<"~BB"<<std::end

2017-02-21 05:39:00 1126

原创 Epoll LT和ET模式

关于epoll解说请参考:点击打开链接下面是使用实例,也可以参考man epoll Ubuntu上的实例#define BUFFSIZE 1024#define PORT 5588using namespace std;#define ERR_EXIT(a) do \{ \ printf("%s", a); \} while (0);typedef vector

2017-02-21 01:03:32 319

原创 ubuntu Samba 配置

samba 安装请参考:点击打开链接在smb.conf 最后添加:[share]path = /home/haihua/programmepublic = yeswritable = yesvalid users = haihuacreate mask = 0644force create mode = 0644directory mask = 0755force dire

2017-02-19 00:28:15 331

原创 gcc 原子操作

详细请参考:点击打开链接主要用于多线程,消除了锁竞争,更为高效实例:templateclass AtomicIntegerT { public: AtomicIntegerT() : value_(0) { } T get() { return __sync_val_compare_and_swap(&value_, 0, 0);

2017-02-19 00:12:59 295

原创 boost::less_than_comparable 使用

boost::less_than_comparable继承使用此类可以只重写operator会自动生成头文件:#include 实例:class point :public boost::less_than_comparable{public: point(int num = 0) :num_(num){} int getNum()const{ return num_; }

2017-02-18 04:30:42 566

原创 select

int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);管理多个IO事件;int nfds :要管理的事件最大值+1;fd_set *readfds: 关注可读事件,和connect 事件fd_set *writefds:关注可写事件

2017-02-15 08:33:48 176

原创 网络模型:阻塞IO,非阻塞IO,IO复用,信号驱动IO,异步IO

阻塞IO:服务端代码:有客户端连接过来就会开起一个线程,这个线程去处理与此客户的数据收发,没有数据就会阻塞在accept那里#include #include #include #include #include #include #include #include #include #include #define BUFFSIZE 1024#define

2017-02-14 19:46:19 372

原创 合并排序

合并排序:将两个已经排好的子序列,合并为一个有序的序列步骤:分解:将n个元素分成各含有n/2个元素的子序列解决:用合并排序法对两个子序列递归地排序(递归至每个子序列只含有一个元素的子序列后就为有序序列)合并:合并两个已排序的子序列得到排序的结果/***************************************************************

2017-02-04 17:25:01 217

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除