开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 3703|回复: 9
收起左侧

[易语言纯源码] 线程安全之临界锁进阶玩法

[复制链接]
发表于 2018-5-15 10:17:10 | 显示全部楼层 |阅读模式   香港特别行政区*
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
感觉很多人对多线程感兴趣,今天就发一个临界锁的源码,当然不是现在很多人用的那种。
这个临界锁是我封装好的一个类,除了基本的临界锁功能,还加入了一个条件变量,这个应该没多少人用过,至少我没看到有人用过。

下面说一下条件变量。关于条件变量的定义我就不啰嗦了,大家自己去百度一下就知道了,这里主要说一下条件变量的作用。
假如有多个线程同时操作一个变量,一条线程读,一条线程写,读取线程需要等待写入线程操作完成且这个变量值与某个已知值相等的时候做一些操作,这种情况下就可以用条件变量来控制线程,同时可以保证线程安全。

比如,你要写一个线程池,一般线程池在池中线程不够用的时候会自动创建新线程(当然前提是当前线程数小于设定的最大值),但创建一条线程到线程体开始执行需要一定的时间(虽然很短),你必须等待新线程创建完毕才能在当前线程中返回(当前方法),否则就不能精确控制线程数量了。那么问题来了,你在一条线程中创建另一条线程,如何才能知道另一条线程已经开始工作了呢?答案当然是使用条件变量了,虽然也可以用其他方法,比如在当前线程中循环判断线程数量是否已增加(在新线程执行体中会递增当前线程数),但使用条件变量无疑是更好的做法。

至于条件变量的用法,源码中有示例,这里就不多说了。

如有需要优化程序性能的朋友可以找我,QQ 1107309266(不免费)。
遇到 BUG 解决不了的也可以联系我,但需要提供源码(方便调试)。


CriticalSection.e (6.08 KB, 下载次数: 84)

结帖率:90% (27/30)

签到天数: 4 天

发表于 2024-6-23 20:05:44 | 显示全部楼层   山东省济宁市
多谢分享
回复 支持 反对

使用道具 举报

发表于 2021-2-21 01:30:44 | 显示全部楼层   江苏省无锡市
临界进入退出
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2018-5-16 14:22:36 | 显示全部楼层   广东省深圳市
临界进入退出 。
回复 支持 反对

使用道具 举报

结帖率:33% (1/3)

签到天数: 5 天

发表于 2018-5-16 11:37:13 | 显示全部楼层   广西壮族自治区南宁市
但愿吧。。。。。
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 2018-5-15 12:54:17 | 显示全部楼层   重庆市重庆市
支持一个~~~~~~~~~~~~
回复 支持 反对

使用道具 举报

结帖率:100% (17/17)
发表于 2018-5-15 10:54:08 | 显示全部楼层   广东省惠州市
就是临界进入退出 。。。
回复 支持 反对

使用道具 举报

结帖率:94% (15/16)

签到天数: 13 天

发表于 2018-5-15 10:36:45 | 显示全部楼层   广东省深圳市
谢谢分享,看看了解下
回复 支持 反对

使用道具 举报

结帖率:100% (26/26)
发表于 2018-5-15 10:23:20 | 显示全部楼层   湖南省怀化市
瞧一瞧 看一看
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

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

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

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