| Algorithm 2 CKP_InitProcess( ) |
| Ask_token (CHm); //ask for token if (token is assigned) then WAIT (token); else CSNi = CSNi+1; //increase its own CSN for (Pk ∈ PLm ∧ k ≠ i) do SEND_DLrequest(Pk); //send DL request CALCULATE(LDS, Pi); DO_uncheckpoint(SCi); UCi = 1; //change mark of uncertain CKP for (Pk ∈ LDS) do if (Pk ∈ DPm) then SEND_CKPReq(CHm); //send CKP request else SEND_CKPReq(Pk); if (Pi get all replies) then CKP_Turning(SCi); //turn uncertain CKP to certain CKP for (Pk ∈ LDS) do if (Pk ∈ DPm) then SEND_CKPturn(CHm); //send checkpoint turn request else SEND_CKPturn (Pk); FIND_CKPdeleted(IntraCDGfinal); //find the deletable checkpoints*/ NOTICE_CKPdeleted(); /*notice processes in same cluster of CKP elimination*/ MNi = 0; /*reset receiving messages number*/ |