开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 4159|回复: 39
收起左侧

[图文资料] 分享关于许可证里面的坑

[复制链接]
结帖率:80% (8/10)
发表于 2022-3-21 17:01:40 | 显示全部楼层 |阅读模式   河北省邯郸市
本帖最后由 吃泡面加不起蛋 于 2022-3-22 12:37 编辑

感觉这次是理清楚思路了。

先解释许可证,以挖掘机为例。
两个挖掘机同时挖一个坑的时候,不进行限制,可能会撞。可使用许可证进行限制,必须拿到许可证,才可以挖,这样就可以保证安全。


========================
理想中的许可证。

1个许可证,AB同时想挖,A挖掘机先拿到,A就可以挖坑,此时B需要等待
A放回去以后,B拿到了,B就可以挖,挖完放回去

1个许可证,A放回去以后,A又想挖,AB又开始抢,AB谁拿到是随机的,并不是一定是B


========================
多个许可证的锁死,以2个为例。

2个许可证,如果A先拿许可证1,再去拿许可证2,然后才能工作,而B先拿许可证2,再去拿许可证1,然后才能工作
这时候就可能出现A拿着许可证1等许可证2,B拿着许可证2等许可证1,许可证冲突锁死了。


通常情况下不是我们故意要锁死,一般是先调用了许可证1,又调用了另一个子程序,另一个子程序调用了许可证2,而许可证2被忽视掉了。

========================
1个许可证的特殊情况,涉及执行UI操作(UI就是界面):
UI是一条单独,特殊的线程。执行是按顺序执行的。

所以如果有一个线程A 进入许可区,操作组件,退出许可区。又有一个按钮操作,点击后 进入许可区,操作组件,退出许可区。
两个同时进行,也可能发送锁死。

分析如下:
线程A先拿住许可证,
此时刚好按钮操作,需要许可证,就在此处等待。
A继续执行,下一步操作组件,但是操作组件需要等其他组件操作完成才可以,所以这里会等按钮操作。
按钮等许可证,线程A拿着许可证等按钮,锁死了。


这种情况很少遇到,遇到后又很难找到原因,因为明面上只有一个许可证。
处理方法可以全改为线程,点击按钮,启动一个线程,在线程里进入许可证。退出许可证。
嫌麻烦的话,也可以 许可证.尝试进入,进入失败,就 处理事件(),让其他线程先执行。

线程操作UI卡死例子.e (31.05 KB, 下载次数: 263)

点评

应该是死锁,不是锁死   河北省邯郸市  发表于 2022-4-14 15:19

评分

参与人数 7好评 +7 精币 +10 收起 理由
网络注册会员 + 1 + 1 感谢分享,很给力!~
3636993 + 1 + 1 只有遇到过这些坑,才知道有多伤脑筋。
fjgh + 1 + 2 支持开源~!感谢分享
进击 + 1 支持开源~!感谢分享
喵帕斯和艾希 + 1 + 2 新技能已get√
洋滨 + 1 + 2 新技能已get√
Suky + 1 + 2 新技能已get√

查看全部评分


结帖率:100% (18/18)

签到天数: 22 天

发表于 2022-3-21 17:23:48 | 显示全部楼层   福建省泉州市
很不错,可以给你的泡面加半个蛋
回复 支持 反对

使用道具 举报

结帖率:90% (9/10)

签到天数: 5 天

发表于 2022-3-21 17:35:51 | 显示全部楼层   湖北省荆州市
一路生花 发表于 2022-3-21 17:23
很不错,可以给你的泡面加半个蛋

加点酸菜
回复 支持 反对

使用道具 举报

结帖率:100% (18/18)

签到天数: 22 天

发表于 2022-3-21 17:42:57 | 显示全部楼层   福建省泉州市

土坑酸菜?
回复 支持 反对

使用道具 举报

结帖率:100% (10/10)

签到天数: 3 天

发表于 2022-3-21 20:24:06 | 显示全部楼层   广东省深圳市
        新技能已get√
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 20 天

发表于 2022-4-14 10:26:11 | 显示全部楼层   广东省深圳市
新技能已get√
回复 支持 反对

使用道具 举报

结帖率:67% (2/3)
发表于 2022-4-14 13:02:36 | 显示全部楼层   四川省成都市
回复 支持 反对

使用道具 举报

发表于 2022-5-4 00:11:22 | 显示全部楼层   河北省邢台市
回复 支持 反对

使用道具 举报

发表于 2022-5-4 00:11:40 | 显示全部楼层   河北省邢台市
{:7_456:}{:7_456:}{:7_456:}
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2022-6-22 11:05:03 | 显示全部楼层   安徽省合肥市
手动阀手动阀
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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