[置顶] 欢迎访问github地址,并指出项目中的缺陷和BUG

摘要: GitHub地址:https://github.com/igithu 阅读全文

posted @ 2015-03-16 12:02 as_ 阅读(926) 评论(0) 推荐(0) 编辑

2015年7月23日

TCP_NODELAY 和 TCP_CORK主要区别

摘要: 一句话总结:tcp_nodelay:禁止nagle算法,有需要发送的就立即发送,比较常见tcp_cork:它是一种加强的nagle算法,过程和nagle算法类似,都是累计数据然后发送。但它没有 nagle中1的限制,所以,在设置cork后,即使所有ack都已经收到,但我还是不想发送数据,我还想继续等... 阅读全文

posted @ 2015-07-23 14:55 as_ 阅读(9856) 评论(0) 推荐(0) 编辑

2014年11月17日

线程互斥与析构函数中mutex的销毁

摘要: 正在实现一个线程池的pthread包装器,突然发现有人在讨论关于http://blog.csdn.net/Solstice/article/details/5238671 是一篇比较老的文章,考虑了下 我在实现线程池包装器的时候会不会出现文章说的析构函数销毁mutex的问题最后得出一个结论 在线程池... 阅读全文

posted @ 2014-11-17 14:34 as_ 阅读(2267) 评论(0) 推荐(0) 编辑

2013年5月11日

C++:vector中的resize()函数 VS reserve()函数

摘要: http://www.cplusplus.com/reference/vector/vector/vector/写代码的时候无意错用了这两个函数 导致测试的时候,程序运行崩溃 发现这两个函数还是有区别的void reserve (size_type n);reserver函数用来给vector预分配存储区大小,即capacity的值 ,但是没有给这段内存进行初始化。reserve 的参数n是推荐预分配内存的大小,实际分配的可能等于或大于这个值,即n大于capacity的值,就会reallocate内存capacity的值会大于或者等于n 。这样,当ector调用push_back函数使得siz 阅读全文

posted @ 2013-05-11 17:01 as_ 阅读(60673) 评论(0) 推荐(0) 编辑

2012年11月12日

C++ 虚继承

摘要: 转自:http://www.cppblog.com/chemz/archive/2007/06/12/26135.html虚继承和虚基类的定义是非常的简单的,同时也是非常容易判断一个继承是否是虚继承的,虽然这两个概念的定义是非常的简单明确的,但是在C++语言中虚继承作为一个比较生僻的但是又是绝对必要的组成部份而存在着,并且其行为和模型均表现出和一般的继承体系之间的巨大的差异(包括访问性能上的差异),现在我们就来彻底的从语言、模型、性能和应用等多个方面对虚继承和虚基类进行研究。 首先还是先给出虚继承和虚基类的定义。 虚继承:在继承定义中包含了virtual关键字的继承关系; 虚基类:在虚继承体系 阅读全文

posted @ 2012-11-12 14:38 as_ 阅读(2531) 评论(0) 推荐(0) 编辑

2012年11月4日

Linux进程间通信之信号量(semaphore)、消息队列(Message Queue)和共享内存(Share Memory)

摘要: System V 进程通信方式:信号量(semaphore)、消息队列(Message Queue)和共享内存(Share Memory)信号量信号量(semaphore)实际是一个整数,它的值由多个进程进行测试(test)和设置(set)。就每个进程所关心的测试和设置操作而言,这两个操作是不可中断的,或称“原子”操作,即一旦开始直到两个操作全部完成。测试和设置操作的结果是:信号量的当前值和设置值相加,其和或者是正或者为负。根据测试和设置操作的结果,一个进程可能必须睡眠,直到有另一个进程改变信号量的值。信号量可用来实现所谓的“临界区”的互斥使用,临界区指同一时刻只能有一个进程执行其中代码的代码 阅读全文

posted @ 2012-11-04 15:15 as_ 阅读(14906) 评论(0) 推荐(0) 编辑

2012年11月3日

Linux进程间通信之管道(pipe)、命名管道(FIFO)与信号(Signal)

摘要: 整理自网络Unix IPC包括:管道(pipe)、命名管道(FIFO)与信号(Signal)管道(pipe)管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;实现机制:管道是由内核管理的一个缓冲区,相当于我们放入内存中的一个纸条。管道的一端连接一个进程的输出。这个进程会向管道中放入信息。管道的另一端连接一个进程的输入,这个进程取出被放入管道的信息。一个缓冲区不需要很大,它被设计成为环形的数据结构,以便管道可以被循环利用。当管道中没有信息的话,从管道中读取的进程会等待,直到另一端的进程放入信息。当管道被放满信息的 阅读全文

posted @ 2012-11-03 13:26 as_ 阅读(44283) 评论(2) 推荐(4) 编辑

2012年11月2日

C++深拷贝与浅拷贝

摘要: 转自:http://www.cnblogs.com/BlueTzar/articles/1223313.html对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include <iostream> using namespace std; class CExample { private: int a; public: CExample(int b) { a=b; } void Show... 阅读全文

posted @ 2012-11-02 14:53 as_ 阅读(3725) 评论(0) 推荐(0) 编辑

2012年10月11日

Linux 多线程环境下 进程线程终止函数小结

摘要: pthread_kill:pthread_kill与kill有区别,是向线程发送signal。,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数。int pthread_kill(pthread_t thread, int sig);向指定ID的线程发送sig信号,如果线程代码内不做处理,则按照信号默认的行为影响整个进程,也就是说,如果你给一个线程发送了SIGQUIT,但线程却没有实现signal处理函数,则整个进程退出。pthread_kill(threadid, SIGKILL)杀死整个进程。 如果要获得正确的行为,就需要在线程内实现si 阅读全文

posted @ 2012-10-11 19:13 as_ 阅读(23686) 评论(0) 推荐(0) 编辑

Linux 多线程环境下 线程joinable状态和unjoinable状态

摘要: 这里主要讨论这两种状态下,线程终止以及资源释放的问题linux线程中,pthread有两种状态joinable状态和unjoinable状态。joinable状态下,当线程函数自己返回退出时或pthread_exit时都不会释放线程所占用堆栈和线程描述符。只有当你调用了pthread_join之后这些资源才会被释放,这是需要main函数或者其他线程去调用pthread_join函数。unjoinable状态的线程,这些资源在线程函数退出时或pthread_exit时自动会被释放。设置unjoinable状态设置有两种办法 一是可以在pthread_create时指定,二是线程创建后在线程中pt 阅读全文

posted @ 2012-10-11 18:02 as_ 阅读(3719) 评论(0) 推荐(0) 编辑

导航