免费注册 查看新帖 |

Chinaunix

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

[C] 今天坛子里好安静啊,讨论一下队列吧:) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-25 11:06 |只看该作者 |倒序浏览
本帖最后由 zhendehaoren 于 2014-07-25 11:08 编辑

生产者消费者模型的思路是,一个线程负责接受消息,将消息存到队列里,另一个线程负责消费,处理队列的内容。

我的思路是,这个队列是单向链表,如果双向的话,每次遍历时不是从头开始遍历。

然后链表节点包含了处理状态(处理完如果关闭就释放节点,如果不关闭,就置一个状态),文件描述符,buffer。 消费者线程不停的遍历队列,
while(1){
handle list;

sleep;

}

这样正确吗?

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2014-07-25 11:09 |只看该作者
这种满大街都是的东西,有什么好讨论的。
单链表足够使用了,双向链表也可以当单链表使用,你别那么死板

论坛徽章:
0
3 [报告]
发表于 2014-07-25 11:12 |只看该作者
我一直对不停遍历链表这种事情感觉挺神奇。
像libevent,把各种事件注册到一个链上,然后不停的遍历,查看是否有可读可写,或者timer触发

不停的遍历,对系统有损耗吗?

论坛徽章:
154
2022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16赛季CBA联赛之深圳
日期:2022-11-02 14:02:4515-16赛季CBA联赛之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16赛季CBA联赛之八一
日期:2023-11-04 19:23:5115-16赛季CBA联赛之广夏
日期:2023-12-13 18:09:34
4 [报告]
发表于 2014-07-25 11:15 |只看该作者
找公司的环境讨论一下哈,至少在同事面前公开表现一下上进心

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
5 [报告]
发表于 2014-07-25 11:19 |只看该作者
让CPU干事情,都有损耗

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
6 [报告]
发表于 2014-07-25 11:20 |只看该作者
需要用互斥和信号量来提高同步效率。

论坛徽章:
0
7 [报告]
发表于 2014-07-25 11:31 |只看该作者
我有几个疑问
1 生产者消费者是否只能用线程,多进程应该不行吧
2 这种模型的服务端使用的场合,并发不会太高吧,一个线程负责接收所有连接,感觉有点吃力。当然,吞吐量更重要

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
8 [报告]
发表于 2014-07-25 11:31 |只看该作者
任何一本操作系统的书的都有。P和V的操作要严格按照步骤。否则会造成死锁的。

论坛徽章:
0
9 [报告]
发表于 2014-07-25 11:33 |只看该作者
同步锁当然是必须的,这个另外考虑。

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
10 [报告]
发表于 2014-07-25 11:37 |只看该作者
zhendehaoren 发表于 2014-07-25 11:31
我有几个疑问
1 生产者消费者是否只能用线程,多进程应该不行吧
2 这种模型的服务端使用的场合,并发不会 ...


1、当然可以,进程间也可以通信
2、可以N个生成者M个消费者,可以多组1:1的生产者消费者

依我看,你现在的水平还是别去看设计模式的好,基础技术好了,设计模式自然也会了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP