Algorithm 德克尔';3进程的s算法

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算法中的一些东西-但有3个过程-

我只能找到2个进程的原始版本

目标不是算法,而是它在SMV系统中的实现和验证
您可能应该询问课程工作人员,但您可以使用两个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
这个答案与上面的答案不一样吗?