2017年10月28日
摘要: 本文通过两个图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。如图1所示,给出了TCP通信过程的示意图。 图1 TCP 三次握手四次挥手 图1主要包括三部分:建立连接、传输数据、断开连接。 1)建立TCP连接很简单,通过三次握手便可建立连 阅读全文
posted @ 2017-10-28 21:22 God-father 阅读(477) 评论(0) 推荐(0) 编辑
摘要: 对于多线程访问同一变量是否需要加锁的问题,先前大家都讨论过。今天用代码验证了一下之前的猜想:32位CPU与内存的最小交换数据为4字节/次,这也是结构体要对齐4字节的原因。在物理上,CPU对于同一4字节的内存单元,不可能写2个字节的同时,又读了3字节。测试环境为:XEON 2CPU*2Windows7 阅读全文
posted @ 2017-10-28 21:09 God-father 阅读(4907) 评论(0) 推荐(0) 编辑
摘要: (shared_ptr)的引用计数本身是安全且无锁的,但对象的读写则不是,因为 shared_ptr 有两个数据成员,读写操作不能原子化。 shared_ptr 的线程安全级别和内建类型、标准库容器、std::string 一样,即: • 一个 shared_ptr 对象实体可被多个线程同时读取(文 阅读全文
posted @ 2017-10-28 21:08 God-father 阅读(683) 评论(0) 推荐(1) 编辑
摘要: 对于多线程访问同一变量是否需要加锁的问题,先前大家都讨论过。今天用代码验证了一下之前的猜想:32位CPU与内存的最小交换数据为4字节/次,这也是结构体要对齐4字节的原因。在物理上,CPU对于同一4字节的内存单元,不可能写2个字节的同时,又读了3字节。测试环境为:XEON 2CPU*2Windows7 阅读全文
posted @ 2017-10-28 20:30 God-father 阅读(1651) 评论(0) 推荐(0) 编辑
  2017年9月21日
摘要: vs每次都重新编译,最可能是时间引起的! 比如文件最后的修改时间为2017.09.21,因为某些原因你把机器时间改为了2017.08.21,那么vs每次编译的时候都会监测,发现生成的文件早于源文件的时间,则判断生成的文件已经过期,vs就会重新编译这个文件。 解决方案 1.修改每个文件,保存一下,这样 阅读全文
posted @ 2017-09-21 17:46 God-father 阅读(1336) 评论(0) 推荐(1) 编辑