Algorithm 德克尔';3进程的s算法
作为我的助手,我必须验证Dekker算法中的一些东西-但有3个过程- 我只能找到2个进程的原始版本 目标不是算法,而是它在SMV系统中的实现和验证Algorithm 德克尔';3进程的s算法,algorithm,concurrency,Algorithm,Concurrency,作为我的助手,我必须验证Dekker算法中的一些东西-但有3个过程- 我只能找到2个进程的原始版本 目标不是算法,而是它在SMV系统中的实现和验证 您可能应该询问课程工作人员,但您可以使用两个Dekker互斥来实现三进程互斥。进程0和进程1竞争获取互斥锁A;互斥锁A的持有者和进程2竞争获取互斥锁B,互斥锁B的持有者被允许运行一个关键部分。//Dekkers算法版本3 // Dekkers algorithm version3 system: boolean t1WantsToEnte
您可能应该询问课程工作人员,但您可以使用两个Dekker互斥来实现三进程互斥。进程0和进程1竞争获取互斥锁A;互斥锁A的持有者和进程2竞争获取互斥锁B,互斥锁B的持有者被允许运行一个关键部分。
//Dekkers算法版本3
// Dekkers algorithm version3
system:
boolean t1WantsToEnter=false;
boolean t2WantsToEnter=false;
startThreads;//initialize and launch all threads
Thread T1;
void main();{
while(!done);
{
t1WantsToEnter=true;
while(t2WantsToEnter); //wait
//critical section cokde
t1WantsToEnter=false;
//code outside critical section
Thread T2;
void main();{
while(!done);
{
t2WantsToEnter=true;
while(t1WantsToEter);//wait
//critical section code
t2WantsToEnter=false;
//code outside critical section
// if u want to know how this code is executed using RAM diagram,
系统:
布尔t1WantsToEnter=false;
布尔值t2WantsToEnter=false;
startThreads;//初始化并启动所有线程
//螺纹T1
void main(){
而(!完成);
{
t1WantsToEnter=真;
while(t2WantsToEnter){//等待
//临界截面焦炭
t1WantsToEnter=假;
}
//临界段外的代码
}//结束时
}//结束线程T1
//螺纹T2
void main(){
而(!完成);
{
t2WantsToEnter=真;
while(t1WantsToEter){//等待
//临界截面代码
t2WantsToEnter=假;
}
//临界段外的代码
}//结束时
}//结束线程T2
这个答案与上面的答案不一样吗?