摘要: 转自研发客:http://www.yanfake.comgcc提供了大量的警告选项,对代码中可能存在的问题提出警 告,通常可以使用-Wall来开启以下警告: -Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts -Wimplicit-int -Wimplicit-function-declaration -Wcomment -Wformat -Wmain (only for C/ObjC and unless -ffreestanding) -Wmissing-braces -Wnonnull -Wp 阅读全文
posted @ 2012-01-06 10:24 yanfake 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 在做网络服务的时候tcp并发服务端程序的编写必不可少。tcp并发通常有几种固定的设计模式套路,他们各有优点,也各有应用之处。下面就简单的讨论下这几种模式的差异: 1、 单进程,单线程模式 在accept之后,就开始在这一个连接连接上的数据收接收,收到之后处理,发送,不再接收新的连接,除非这个连接的处理结束。 优点: 简单。 缺点: 因为只为一个客户端服务,所以不存在并发的可能。 应用: 用在只为一个客户端服务的时候。2、 多进程模式 accept返回成功时候,就为这一个连接fork一个进程,专门处理这个连接上的数据收发,等这个连接处理结束之后就结束这个进程。 优点: 编程相对简单,不用考虑线程 阅读全文
posted @ 2012-01-06 10:20 yanfake 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 内核同步措施为了避免并发,防止竞争。内核提供了一组同步方法来提供对共享数据的保护。 我们的重点不是介绍这些方法的详细用法,而是强调为什么使用这些方法和它们之间的差别。Linux 使用的同步机制可以说从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随 Linux从单处理器到对称多处理器的过度;伴随着从非抢占内核到抢占内核的过度。锁机制越来越有效,也越来越复杂。目前来说内核中原子操作多用来做计数使用,其它情况最常用的是两种锁以及它们的变种:一个是自旋锁,另一个是信号量。我们下面就来着重介绍一下这两种锁机制。自旋锁---------- 阅读全文
posted @ 2011-12-31 13:58 yanfake 阅读(242) 评论(0) 推荐(0) 编辑