c - 关于面包店算法的一些一般问题
问题描述
在这个面包店算法中,choice[n] 被初始化为 False,而 number[n] 也是 0
int number[n];
bool choosing[n];
while(1){
choosing[i] = True;
number[i] = 1 + max(number[0] + ..... + number[n-1]);
choosing[i] = False;
for(int j = 0; j < n ; j++){
while(choosing[j]);
while(number[j]!=0 && ((number[j],j)<(number[i],i)));
}
// Critical Section
number[i] = 0;
}
在此代码中,如果“choosing[i] = TRUE 并且选择[i] = FALSE, while(choosing[i]);” 被移除了,我们可以保持互斥吗?
然而, number[i] 要么被赋值,要么未被赋值。
解决方案
推荐阅读
- java - 使用一维数组打印最长公共子序列 (LCS) 元素
- javascript - AES-GCM 与 Angular 中 Apple 的 CryptoKit 的兼容性
- python - 在缩放 QGraphicsItem 时设置转换点
- sql - 如何为当前和以前的记录创建历史数据集
- php - Nginx 1.18.0 不执行 php 文件,使用 php7.4-fpm
- qt - yocto 调试文件系统布局
- node.js - 每天在javascript中的特定时间触发一个函数
- kotlin - 如何使用 Kotlin Exposed 从 Oracle 数据库调用函数/过程?
- javascript - 有没有办法比较 mongo 聚合中的数组?
- node.js - 使用 Fdisk 在现有系统上以编程方式创建分区