问题标签 [mutual-exclusion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 在 Asp.Net 中创建互斥复选框列表
我有一个从后面的代码绑定的复选框列表。一次可以有一个复选框,两个或更多。我想在同一个上添加互斥属性。有没有办法这样做。我正在搜索的所有文章都在创建静态复选框列表。尝试添加 Ajax 扩展器但没有帮助。
到目前为止,以下是我的代码:
networking - 无线网络上的客户端如何决定谁可以在任何给定时间进行传输?
我最近一直在考虑无线网络,昨晚我意识到我无法找到答案:客户端如何知道他们何时可以传输而不是踩到其他客户端的传输?
我认为有此类可用的文档,但我在半小时的随意谷歌查询中找不到任何有用的东西,可能是因为我不知道正确的术语。如果这是一个愚蠢的问题,请提前道歉。. .
这就是我感到困惑的原因:根据我对 RF 硬件如何工作的理解,我们可以将传输介质建模为不同 RF 客户端之间的安全共享寄存器(因为一个客户端广播的内容可能会被其他客户端覆盖并在二)。但是安全寄存器只有第 1 个共识,那么我们如何确定谁可以在任何给定点传输呢?我假设一次只有一个客户端可以传输——也许这是我的根本误解?
甚至使用随机共识协议似乎也很笨拙,因为我所知道的唯一一个使用原子寄存器,而不是安全寄存器,而且也没有上限,所以两个具有相同随机种子的相同设备会运行很长时间。
谢谢!
java - 了解临界区
我正在网上阅读一些关于关键区域、进入协议和退出协议的示例,并且很难弄清楚。 http://pages.cs.wisc.edu/~dusseau/Classes/CS537-S01/SampleQuizzes/sol2.html
这个例子的入口协议、出口协议和临界区是什么?至于临界区,是互斥、饿死还是会陷入僵局?
javascript - JavaScript 或 jQuery 中的关键部分
我有一个网页,其中异步触发了某个 Ajax 事件。这个 Ajax 部分可以被调用一次或多次。我无法控制触发此事件的次数,也无法控制时间。
此外,该 Ajax 部分中的某些代码应该作为临界区运行,这意味着,当它运行时,不应运行该代码的其他副本。
这是一个伪代码:
- 运行 JavaScript 或 jQuery 代码
- 进入临界区即Ajax(当某个进程在等待响应回调时,不要再次进入该区,直到这个过程完成)
- 运行更多 JavaScript 或 jQuery 代码
我的问题是,如何按照上述方式运行第 2 步?如何使用 JavaScript 或 jQuery 创建/保证互斥部分。
我了解理论(信号量、锁等),但我无法使用 JavaScript 或 jQuery 实现解决方案。
编辑
如果您建议使用布尔变量进入临界区,这将不起作用,下面的行将解释原因。
关键部分的代码如下(使用布尔变量建议):
现在这是使用布尔变量建议的锁定部分的代码。这将无法按以下建议工作:
用户向下滚动,(并且基于关联
jQuery(window).on('scroll', load_data_from_database);
触发了多个滚动事件。假设几乎同时触发了两个滚动事件
两者都调用
load_data_from_database
函数第一个事件检查是否
window.lock
为假(答案为真,所以如果陈述正确)第二个事件检查是否
window.lock
为假(答案为真,所以如果陈述正确)第一个事件进入if语句
第二个事件进入if语句
第一条语句设置
window.lock
为true第二个语句设置
window.lock
为true第一条语句运行 Ajax 临界区
第二条语句运行 Ajax 临界区。
两者都完成了代码
正如您所注意到的,这两个事件几乎同时被触发,并且都进入了临界区。所以锁是不可能的。
database - 分布式互斥:小圈子形成
我一直在研究基于 Quorums 概念的分布式互斥算法。
引用:一个 Coterie C 被定义为一组集合,其中每个集合 g ∈ C 称为一个 quorum。
以下属性适用于小圈子中的仲裁:
1) 交集性质:对于每个群体 g,h ∈ C,g ∩ h= ∅。例如,集合 {1,2,3}、{2,5,7} 和 {5,7,9} 不能成为小圈子中的仲裁,因为第一和第三集合没有公共元素。
2) 极小性:在小圈子 C 中不应该存在满足 g ⊇ h 的群体 g、h。例如,集合 {1,2,3} 和 {1,3} 不能成为小圈子中的群体,因为第一个集合是第二个集合的超集。
我想知道,给定分布式系统中的一组节点,这些节点是如何形成这些小圈子或一组法定人数的?有什么算法或技术可以做到这一点?
更新:换句话说,问题是“给定'N'个节点,形成'K'个仲裁的最佳方法是什么,这样它们中的任何两个都有'J'个共同的节点?”
c - 修改 Peterson 算法
我知道 Peterson Algo 的默认实现。给我 - 互斥、进步和有限的等待。
正常的彼得森算法如下。
我希望对这个版本进行一些修改。
1) 进程 P0 中的语句 flag[0] = TRUE 和 flag[0] = FALSE 互换,在进程 P1 中进行类似的更改。这个算法会为我提供 - 互斥、进步和有限等待。- 我觉得这个算法不支持互斥。任何人都可以为我提供更多信息吗?
2) Peterson 解中的语句 while (flag[1] && turn = 1) 改为 while (flag[1] or turn = [1] ) 并在进程 P1 中进行类似的更改。结果系统违反了临界区的哪些属性,为什么?- 这仍然会有互斥,但我怀疑 Progress 和 Bounded waiting。任何人都可以为我提供更多信息吗?
谢谢你的时间。
algorithm - 如果我们重新排序彼得森算法中的命令以实现互斥,会发生什么?
我已经阅读了彼得森的互斥算法。然后有一个问题,如果我们重新排序 do...while 循环中的第一个和第二个命令会发生什么?如果我们这样做,我看不到会发生什么……有人能告诉我我错过了什么吗?
process - Spin unreached in proctype "-end-"
I'm pretty new at spin model checking and wanted to know what this error means:
here is my code:
It actually doesn't have to end, it is a mutual exclusion program that checks if the two processes aren't at the critical section together. Does the error means that the program doesn't end? Thanks!
python - 两个 python 脚本用互斥的 txt 文件编写并相互等待 - 没有线程
我有两个脚本在同一台机器上作为无限循环在 python 中运行,它们不断监视一些值。他们通过 file.txt 进行通信
B 将消息添加到 file.txt 以便它们堆积起来。当 A 检查 file.txt 时,它会将它们读入并清空 file.txt
一个
乙
泡菜是我希望每个脚本仅在另一个脚本不使用它时打开 file.txt,或者等待它停止使用。因此,当 B 正在写入并且 A 想要读取时,B 将暂停一小段时间然后继续。
无需同步两者。实际上,我希望它们是独立的,而不是线程化的或并行运行的。例如,B 可以循环,而 A 只能循环一次,反之亦然。或者,如果 A 由于某种原因被延迟,则消息只会堆积在 file.txt 中,因为 B 继续运行。
我已阅读有关锁定文件的信息。是否可以在每个脚本中执行以下操作:
“等待解锁”和“文件被 B 锁定”和“锁定文件”会使用什么工具?
multithreading - 餐饮哲学家的主题。放下筷子的顺序
我正在为一位哲学家创建一个线程。这是伪代码:
直觉,我认为松开筷子的顺序并不重要。所以先放下左筷子,我能先放下右筷子吗?这会导致任何错误吗?我怀疑它会。如果这导致死锁,怎么办?如果不是,但建议先离开,那为什么?
谢谢!