标签归档:代理

用纯C面向过程写icefox3的代码

6月底在Ubuntu下写了个框架,这几天发现写不下去了,又重新用Codelite组建了一次代码。还是采用纯C的代码,和以前的一些代码不同之处是,这次不打算使用面向对象的思想去指导我的代码,取以代之的是马列主义和毛泽东思想。似乎觉得面向过程更适合使用异步的socket,所以这次也没必要用到多线程编程了。

其实,我一直很赞成多线程编程在大多数时候能够把很复杂的东西变得很简单,只要能把资源管理好即可。而基于事件响应的编程通常连写一个最简单的ftp服务器程序都会变得异常复杂,尤其在使用非阻塞socket的时候。我所指的复杂和简单是针对建模和代码构建方面,而不是在代码量上。阅读一个多线程ftp服务器源代码比一个单线程异步的ftp服务器源代码要轻松得多。多线程的时候你只需要知道一个线程要做什么,其它的线程都是做相同的东西了。而且这些线程的工作都是有很严谨的执行顺序,先做什么后做什么。但是单线程异步的时候情况就不同了,往往一个线程在处理一个连接请求的时候又突然进入了等待状态,而紧接着又跑去了执行别的代码,这样一来你就不容易看出程序的执行次序和所做工作的流程图。

继续阅读