免费注册 查看新帖 |

Chinaunix

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

[C++] c++多线程 中断请求 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-04-18 13:04 |只看该作者 |倒序浏览
各位大神,有个c/c++多线程web项目。有多个工作线程,每个工作线程对应一个请求处理队列。每个线程轮训从队列里取请求,处理请求。
现在有个问题,如果前面一个请求处理时间很长的话,队列后面的请求就会一直在等待。
有没有什么办法能杀死前面那个请求吗(每个请求基本都会有查询数据库啊这些操作)。

论坛徽章:
12
2015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之同曦
日期:2017-03-17 19:13:162016科比退役纪念章
日期:2016-11-07 08:28:12luobin
日期:2016-06-17 17:46:36wusuopu
日期:2016-06-17 17:43:4515-16赛季CBA联赛之福建
日期:2016-01-14 12:49:22程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2015-06-08 22:20:00程序设计版块每日发帖之星
日期:2015-06-08 22:20:002015年亚洲杯之科威特
日期:2015-03-24 14:21:272015年迎新春徽章
日期:2015-03-04 09:57:092016科比退役纪念章
日期:2018-04-10 16:20:18
2 [报告]
发表于 2016-04-18 13:25 |只看该作者
加超时啊,或者其他类似的条件。

论坛徽章:
0
3 [报告]
发表于 2016-04-18 13:36 |只看该作者
你的超时是数据库这些层面的超时吧,有没有线程级别的超时回复 2# VIP_fuck

   

论坛徽章:
6
技术图书徽章
日期:2013-11-13 11:11:27子鼠
日期:2014-02-20 17:54:13处女座
日期:2014-06-16 17:43:33午马
日期:2014-08-08 09:11:17未羊
日期:2014-08-10 11:57:072015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2016-04-18 13:41 |只看该作者
本帖最后由 littledick 于 2016-04-18 13:56 编辑
z32556601 发表于 2016-04-18 13:04
各位大神,有个c/c++多线程web项目。有多个工作线程,每个工作线程对应一个请求处理队列。每个线程轮训从队 ...


既然每个线程都有自己的消息队列。到处理的时候简单的把请求消息swap到工作线程自己专用的部分,不就什么问都解决了?锁的力度只需要指针交换的时间。处理前保存工作现场。

就算一个线程算死了,也影响不到其他线程。

分发投递的线程做个负载均衡就,哪个工作线程睡眠时间多,就往哪里投,一直没睡的警告报出来。

论坛徽章:
26
处女座
日期:2016-04-18 14:00:4515-16赛季CBA联赛之深圳
日期:2020-06-02 10:10:5015-16赛季CBA联赛之广夏
日期:2019-07-23 16:59:452016科比退役纪念章
日期:2019-06-26 16:59:1315-16赛季CBA联赛之天津
日期:2019-05-28 14:25:1915-16赛季CBA联赛之青岛
日期:2019-05-16 10:14:082016科比退役纪念章
日期:2019-01-11 14:44:062016科比退役纪念章
日期:2018-07-18 16:17:4015-16赛季CBA联赛之上海
日期:2017-08-22 18:18:5515-16赛季CBA联赛之江苏
日期:2017-08-04 17:00:4715-16赛季CBA联赛之佛山
日期:2017-02-20 18:21:1315-16赛季CBA联赛之天津
日期:2016-12-12 10:44:23
5 [报告]
发表于 2016-04-18 14:03 |只看该作者
c/c++多线程web项目 这项目做起来得多累

论坛徽章:
24
狮子座
日期:2013-12-31 10:48:0015-16赛季CBA联赛之吉林
日期:2016-04-18 14:43:1015-16赛季CBA联赛之北控
日期:2016-05-18 15:01:4415-16赛季CBA联赛之上海
日期:2016-06-22 18:00:1315-16赛季CBA联赛之八一
日期:2016-06-25 11:02:2215-16赛季CBA联赛之佛山
日期:2016-08-17 22:48:2615-16赛季CBA联赛之福建
日期:2016-12-27 22:39:272016科比退役纪念章
日期:2017-02-08 23:49:4315-16赛季CBA联赛之八一
日期:2017-02-16 01:05:3415-16赛季CBA联赛之山东
日期:2017-02-22 15:34:5615-16赛季CBA联赛之上海
日期:2017-11-25 16:17:5015-16赛季CBA联赛之四川
日期:2016-01-17 18:38:37
6 [报告]
发表于 2016-04-18 15:11 |只看该作者
回复 1# z32556601


    “每个工作线程对应一个请求处理队列”   

    这个设计真是...,我想应该用一个类似银行排号机的设计,用一个请求处理队列排队,哪个线程有空派那个线程处理,哪个线程超时了就清理了重启。

论坛徽章:
0
7 [报告]
发表于 2016-04-19 13:32 |只看该作者
web server一般用多进程
每个进程有ID号,管理者kill掉它就行了。可以参考PHP的实现,可以参考apache代码。
不过你们小项目,也用不到这么复杂。直接用一个现成的MQ不就好了吗,推荐用RabbitMQ
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP