随笔分类 -  网络篇

摘要:自旋锁 自旋锁是专为防止多处理器并发而引入的一种锁,它应用于中断处理等部分。对于单处理器来说,防止中断处理中的并发可简单采用关闭中断的方式,不需要自旋锁。 自旋锁最多只能被一个内核任务持有,如果一个内核任务试图请求一个已被争用(已经被持有)的自旋锁,那么这个任务就会一直进行忙循环——旋转——等待锁重新可用。要是锁未被争用,请求它的内核任务便能立刻得到它并且继续进行。自旋锁可以在任何时刻防止多于一个的内核任务同时进入临界区,因此这种锁可有效地避免多处理器上并发运行的内核任务竞争共享资源。 事实上,自旋锁的初衷就是:在短期间内进行轻量级的锁定。一个被争用的自旋锁使得请求它的线程在等待锁重新可... 阅读全文
posted @ 2012-10-16 15:59 SA高处不胜寒 阅读(344) 评论(0) 推荐(0)
摘要:我发现有个公司面试的时候问了对TCP协议比较细节的地方,那就写一下帮助自己加深理解和记忆。在开始说TIME_WAIT状态之前,要知道TCP协议是如何关闭连接的。很多人对TCP协议的三次握手都很熟悉(不知道的可以参考我以前的帖子),因为学校的垃圾考试都爱考三次握手,但是很多知道三次握手的人都对TCP协议是如何关闭连接不了解。不说废话了,TCP关闭连接过程如下图,寡人用photoshop画的,凑合看一下:为了方便描述,我给这个TCP连接的一端起名为Client,给另外一端起名为Server。上图描述的是Client主动关闭的过程,FTP协议中就这样的。如果要描述Server主动关闭的过程,只要交换 阅读全文
posted @ 2012-09-11 20:40 SA高处不胜寒 阅读(712) 评论(0) 推荐(0)
摘要:#include <winsock2.h>#include <stdio.h>#pragma comment( lib, "ws2_32.lib" )struct sockaddr_in server_addr;struct sockaddr_in client_addr;int main(void){long a =0x102030FF;long b =0x405060FF;memcpy((char*)&server_addr.sin_addr, (char*)&a, sizeof(server_addr.sin_addr));me 阅读全文
posted @ 2012-08-19 11:52 SA高处不胜寒 阅读(1009) 评论(0) 推荐(0)