b. Giải pháp dùng biến khóa Dùng biến khóa chung Procedure P(lock: integer); begin repeat while lock=1 do; Lock=1 ; lock:=0 ; until .F. end; Var lock1, lock2: byte; begin lock1:=0; lock2:=1 p1: repeat while lock2=1 do; Lock1:=1 ; lock1:=0 ; until .F. p2: repeat while lock1=1 do; Lock2:=1 ; lock2:=0 ; until .F. end | Procedure P lock integer begin repeat while TestAnhSetLock lock do đoạn găng của p lock 0 Đoạn không găng until .F. end b. Giải pháp dùng biến khóa Dùng biến khóa chung Procedure P lock integer begin repeat while lock 1 do Lock 1 đoạn găng của p lock 0 Đoạn không găng until .F. end Dùng biên khóa riêng Var lockl lock2 byte begin lock1 0 lock2 1 p1 repeat while lock2 1 do Lock1 1 đoạn găng của p lock1 0 Đoạn không găng until .F. p2 repeat while lock1 1 do Lock2 1 đoạn găng của p lock2 0 Đoạn không găng until .F. .