您的位置:首页 > 其它

日志系统(二)改进与应用

2012-04-18 23:52 239 查看
上次简单地把日志系统从windows上移植到linux中,并修复其中bug,使其功能基本可行。

现在我又做了一个小小的socket应用程序,将日志系统嵌入进去,基本上能使用,但仍然存在不足,经过一系列修复后,自我感觉算是能小用一把了。

日志系统的改进:

1. 用锁机制实现了多线程对日志接口的异步调用。

2. 增加根据日志等级输出打印信息的功能,外部应用程序能控制日志打印的等级。

3. 增加定时器功能,每隔5秒钟会自动将缓存中的日志信息输出到文件中。这样从文件中看到的信息就会比较全面和完整。

socket应用程序的设计:

主要是server端:

listen将请求放入等待队列中

accept会从等待队列中取出一个请求,生成clientFd返回。

根据这样的linux的两个标准函数,我有如下思路:

1. 首先开辟一个数组,用于存放clientFd

2. 在主线程A里不断循环尝试accept,将生成clientFd放入到数组中。

3. 主线程中生成新线程B,用于循环读取数组的请求,然后做出相应的处理。

4. 这时需要注意线程A,B之间的同步与互斥访问数组。同步关系如下:

A线程发现数组已满,无法继续放入clientFd,则等待。当数组为空时,A线程放入一个fd之后,则发出唤醒B线程的signal。

B线程发现数组已空,无法继续读取clientFd,则等待。当数组为满时,B线程删除一个fd之后,则发出唤醒A线程的signal。

当然我的实现要比这个稍微复杂一些,毕竟考虑的东西更多,上面只是基本的说明,感觉像是在做试卷一样,呵呵。

我把代码放出来,大家可以到我的博客资源里面下载。标题:日志系统

写了这么多,是想找到编程爱好者,一起探讨。如果你是,欢迎加我QQ:402320131
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: