- 博客(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关注的人