- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如资源所述,Bakery 算法应该是无死锁的。但是当我试图理解伪代码时,我想到了一条可能引发死锁的行(据我所知)。
引用下面的代码,在 Lock() 函数中,我们有一行内容是
label[i] = max( label[0], ..., label[n-1] ) + 1;
如果两个线程同时进入该状态,并且由于 max 不是原子的,两个标签将获得相同的值怎么办?
然后由于两个标签具有相同的值,因此具有该标签的两个线程将同时获得进入临界区的许可。不会出现死锁吗?
我尽力在这里解释问题。如果仍然不清楚,请发表评论。谢谢。
class Bakery implements Lock {
volatile boolean[] flag;
volatile Label[] label;
public Bakery (int n) {
flag = new boolean[n];
label = new Label[n];
for (int i = 0; i < n; i++) {
flag[i] = false; label[i] = 0;
}
public void lock() {
flag[i] = true;
label[i] =max(label[0], ...,label[n-1])+1;
while ( $ k flag[k] && (label[i],i) > (label[k],k);
}
}
public void unlock() {
flag[i] = false;
}
最佳答案
Then since two labels have to same value, both threads with that labels will get the permission to go for the critical section at the same time. Wouldn't that occur a deadlock?
首先,您可能指的是 race , 不是 deadlock .
但是,不,这里不会有比赛。如果你看,有条件
(label[i],i) > (label[k],k)
当发生这种情况时,线程实际上处于忙等待状态。
这意味着即使 label[i]
与 label[k]
相同(因为两者同时执行了 max
),编号较高的线程将推迟到编号较低的线程。
(可以说,这是算法的问题,因为它固有地优先考虑线程。)
关于multithreading - Bakery Algorithm max() 操作是否会出现死锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40239138/
我想在本地移动并启动我的 wordpress 站点。 我无法识别 wp-bakery 文件夹,实际上我不知道插件文件夹中或主题中的插件文件夹(我有 truemag 主题) 此致, 达留什 最佳答案 W
我最近在学习中遇到了面包店算法,只需要澄清一些事情。 如果进程没有选择大于所有现有票证的票号,面包店算法是否可能违反互斥? 在没有争用的情况下,在临界区之后将 number[i] 设置为零是否对成功很
我正在尝试覆盖 WP Bakery 的选项卡动画,该动画可将内容垂直滑入和滑出 View 。我是一名 JS 经验有限的前端设计师。该站点运行一个主题,但根据我在代码中可以看出的内容,选项卡和动画被编码
我正在尝试覆盖 WP Bakery 的选项卡动画,该动画可将内容垂直滑入和滑出 View 。我是一名 JS 经验有限的前端设计师。该站点运行一个主题,但根据我在代码中可以看出的内容,选项卡和动画被编码
我的 Python 项目中有一个奇怪的问题。它使用 SQLAlchemy 和 Bakery 来准备查询。我有一个函数,它接受连接 (db)、面包店和对象数组。 此函数在 for 循环中被其他函数调用多
我是多线程编程的新手,我尝试编写 Bakery Lock Algorithm在 C 中。 代码如下: int number[N]; // N is the number of threads
我正在尝试学习vaadin JAVA框架。我正在查看 Bakery App 的代码。在 LoginView.java 中,调用 setAction('login') 来处理成功的身份验证。我想知道这是
我有一行使用 WP Bakery(以前的 Visual Composer),其中有两列只是背景图像。没有内容。但是,当我在 WordPress 的前端编辑器中将行设置为全高时,该行仍然不会垂直拉伸(s
如资源所述,Bakery 算法应该是无死锁的。但是当我试图理解伪代码时,我想到了一条可能引发死锁的行(据我所知)。 引用下面的代码,在 Lock() 函数中,我们有一行内容是 label[i] = m
我正在尝试通过记录的函数 vc_add_param() 以这种方式将 ID 属性添加到 Visual Composer 中的行: $attributes = array( 'type' => 'te
我的大学有一个关于 n 个进程的临界区问题的项目。我在 c 中为 2 个进程编写了代码,但我无法弄清楚如何让它为 n 个进程工作。代码在 C 语言中用于 linux 线程。 这是 2 个进程的代码。
所以,我不熟悉 C 中的共享内存和 shm 函数。 我有两个程序;主人和奴隶。在最一般的意义上:主程序在共享内存中创建一个 sharedNum 整数,并 fork 出多个执行从程序的进程。然后,从属程
我们正在为客户网站使用 WP Bakery Page Builder。该插件工作正常,但有时角色管理器中的设置会重置 Composer 应该使用的帖子类型。 我们正在研究以编程方式破解设置以将其设置为
我们正在为客户网站使用 WP Bakery Page Builder。该插件工作正常,但有时角色管理器中的设置会重置 Composer 应该使用的帖子类型。 我们正在研究以编程方式破解设置以将其设置为
我是一名优秀的程序员,十分优秀!