开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2874|回复: 17
打印 上一主题 下一主题
收起左侧

[求助] 多线程大佬这边请,请教逻辑

[复制链接]
结帖率:100% (26/26)
跳转到指定楼层
楼主
发表于 2017-3-10 11:00:12 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式   浙江省杭州市
多线程批量注Ce的时候,想精确控制注Ce数量,又绝对不想TerminateThread,该怎么个逻辑呢?

我现在的做法是弄一些全局变量,每个代码片段都利用CAS判断一下。但说实话还是不精确(应该说是不敢精确),比如DX你收到了钱都扣了你总不能丢掉吧,于是这个时候就有可能超出数量,而且最严重的情况超出(线程数 - 1)个。

我还有个思路是:例如4线程,注Ce剩余数到4的时候,就开始逐渐收缩线程数,这样最后一个的时候只有一条线程,但具体实现又有点头痛,毕竟还要考虑时间。

有大佬有好的建议么?感谢


结帖率:100% (2/2)

签到天数: 2 天

16
发表于 2017-3-10 19:24:09 | 只看该作者   浙江省嘉兴市
junkboy 发表于 2017-3-10 11:15
嗯  我明白你的意思   但我是用池化的思路来写的   不会重复创建线程   不喜欢那样

不管什么方法,原理就一个,注册前判断正在注册的有几个,还剩几个没注册的,就是判断一下就行了,多线程无非就是加锁或者通过线程等待的方法,某个线程注册好了通知另外的线程。。。
回复 支持 反对

使用道具 举报

结帖率:98% (98/100)

签到天数: 5 天

15
发表于 2017-3-10 14:06:01 | 只看该作者   四川省成都市
我感觉你注册几个就添加几个。他怎么会出错呢。
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)
14
发表于 2017-3-10 13:28:22 | 只看该作者   安徽省合肥市
笨人用笨方法
要注CE的数量 为总数  
正在执行中的 为执行中任务数  
注册CE成功的 为成功数
往线程池中投递的时候 先判断一下 执行中任务数+成功数是不是<总数 <的话就往里投 =的话就等待那个执行中的任务返回是不是成功  不成功然后再投 说的有点笼统 大概就是这个意思
回复 支持 反对

使用道具 举报

结帖率:92% (35/38)

签到天数: 3 天

13
发表于 2017-3-10 13:06:27 | 只看该作者   湖南省衡阳市
是不是这样子来着、、、

点评

谢谢了 不过我的问题不是这个意思   浙江省杭州市  发表于 2017-3-10 13:21
回复 支持 反对

使用道具 举报

结帖率:100% (26/26)
12
 楼主| 发表于 2017-3-10 12:28:46 | 只看该作者   浙江省杭州市
WYX89898 发表于 2017-3-10 12:11
上次你说道的 线程池 停止问题,我到现在还没想出来。。。

刚好又有需要,能说说你想出来的办法么==。 ...

我没用线程池,用的一些全局变量和Interlocked函数控制的
回复 支持 反对

使用道具 举报

结帖率:83% (39/47)

签到天数: 10 天

11
发表于 2017-3-10 12:27:13 | 只看该作者   福建省宁德市
junkboy 发表于 2017-3-10 12:26
注册之前就增加注册总数(变量)比较好处理

对的   我也用过这个思路  但是又觉得会影响速度    所以 ...

不会影响的
回复 支持 反对

使用道具 举报

结帖率:100% (26/26)
10
 楼主| 发表于 2017-3-10 12:26:48 | 只看该作者   浙江省杭州市
你凌哥i 发表于 2017-3-10 12:16
或者也可以这样(猜测):注册之前就增加注册总数(变量)比较好处理

注册之前就增加注册总数(变量)比较好处理

对的   我也用过这个思路  但是又觉得会影响速度    所以想寻找一个更好且安全的思路
回复 支持 反对

使用道具 举报

结帖率:100% (26/26)
9
 楼主| 发表于 2017-3-10 12:25:15 | 只看该作者   浙江省杭州市
猥琐小胖子 发表于 2017-3-10 12:13
注册之前判断下已注册成功的数量,这边加通行证或者锁。线程到这边只会排队。

注册前判断是没用的   因为注册有几个流程   

初始化 → 发短X → 等待短X → 收到短X → 提交之前的一系列步骤 → 提交

现在的问题是收到之前判断是没有什么大问题的,但是只要收到了,出于成本考虑就不会再判断了而是一路放行,就会有可能不精确(尤其是【提交之前的一系列步骤】比较耗时的情景下)。所以我才考虑收缩线程数

补充内容 (2017-3-10 12:29):
整个代码段加锁的话又太暴力了。。。
回复 支持 反对

使用道具 举报

结帖率:83% (39/47)

签到天数: 10 天

8
发表于 2017-3-10 12:16:27 | 只看该作者   福建省宁德市
或者也可以这样(猜测):注册之前就增加注册总数(变量)比较好处理

点评

需要例子的话回帖   福建省宁德市  发表于 2017-3-10 12:16
回复 支持 反对

使用道具 举报

  高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表