免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3559 | 回复: 11
打印 上一主题 下一主题

[C] 关于linux纯C的多线程编程求助。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-02-18 09:59 |只看该作者 |倒序浏览
最近自学linux C,在一个大哥的指导下写了一个多线程的日志服务器练手。

现在我的程序是accept连接请求后,为每个连接建立一个线程,在线程中使用文件IO写入文件中。日志文件的文件描述符根据登陆时的用户名在一个哈希表中获取,当前设计用户量不超过100个。目前客户端已经可以通过局域网连接上服务端,并传输写入日志信息。但是现在目前有个功能的实现我没有找到好的方式。

为了不使日志文件太大,需要在日志文件超过一定大小后,在新的日志文件中写入。现在我有两种思路:
1.在每次写入时,检查当前文件的偏移量,超过设定的值时,建立新文件写入。这个方法最简单可行。但是效率可能会有问题。

2.建立一个线程,每隔一段时间后,检查哈希表中所有的文件偏移量,超过设定的值时,用新文件的描述符来替换原有的描述符。这样的话,多线程中的文件描述符每次写入时都需要通过哈希表来获取,因为初学,对于该方案的优缺点没有什么明确的认识。

有没有热心的帮我略微分析下两种方案的优缺点?如果有更好的思路那就最好了。

PS:unix高级环境编程中没有多线程编程的部分,有没有一些比较好的讲linux多线程编程的书籍?

论坛徽章:
0
2 [报告]
发表于 2013-02-18 13:02 |只看该作者
顶上去,有人看么?

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
3 [报告]
发表于 2013-02-18 13:08 |只看该作者
方法1我感觉不会慢, 偏移量在程序里直接记录, 每次写出去多少就+多少, 不需要频繁的lseek/ftell.

论坛徽章:
0
4 [报告]
发表于 2013-02-18 13:18 |只看该作者
回复 3# linux_c_py_php

我2了,没有想到这一点。

方案2你看有什么问题么?我自己觉得有点怪怪的感觉。


   

论坛徽章:
0
5 [报告]
发表于 2013-02-18 13:28 |只看该作者
回复 3# linux_c_py_php

你是csdn那个版主么?说话风格看起来很像。

linux C的多线程编程你是看的哪本书籍呢?

多谢指教。
   

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
6 [报告]
发表于 2013-02-18 13:36 |只看该作者
konden 发表于 2013-02-18 13:28
回复 3# linux_c_py_php

你是csdn那个版主么?说话风格看起来很像。


额, 是我.

方法2需要锁保护整个哈希表吧, 不过因为以读为主, 所以读写锁应该可以.

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
7 [报告]
发表于 2013-02-19 11:53 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
8 [报告]
发表于 2013-02-19 12:26 |只看该作者
zooyo 发表于 2013-02-19 11:53
回复 6# linux_c_py_php


额, 头像一样被认出来了.

论坛徽章:
0
9 [报告]
发表于 2013-02-20 12:35 |只看该作者
回复 8# linux_c_py_php

顺便问下,linux c的多线性编程你看的是哪本书啊。
   

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
10 [报告]
发表于 2013-02-20 12:51 |只看该作者
只看过apue和unp.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP