Thậm chí thứ tự sự kiện toàn cục sử dụng đồng hồ logic đ−ợc miêu tả ở trên không thể khẳng định đ−ợc là thực sự có phải sự kiện a xảy ra tr−ớc sự kiện b hay không cho dù C(a) < C(b) bởi vì chúng có thể cùng đ−ợc thực hiện. Trong tr−ờng hợp đó, cần sử dụng đồng hồ logic vector, trong đó theo ph−ơng thức đồng hồ logic vector, mỗi QT l−u giữ một vertor đồng hồ logic riêng đối với mỗi sự kiện.
Giả sự đồng hồ logic vector của sự kiện a tại bộ xử lý i là VCi(a) = {TS1, TS2, ..., Ci(a), .., TSn}, trong đó n là số QT đồng thời, Ci(a), còn đ−ợc ghi là TSi, là thời gian đồng hồ logic của sự kiện a trong QT Pi và TSk (k nhận 1, 2, ... , n ngoại trừ i) là −ớc l−ợng tốt
d = 1 a,40 42 b,45 58 c,60 d,20 e,50 55 f,60 81 43 57 g,50 h,75 56 80
nhất cho thời gian đồng hồ logic của QT Pk. Ước l−ợng tốt nhất cho thời gian đồng hồ lôgic của QT khác nhận đ−ợc thông qua thông tin về tem thời gian đ−ợc mang trong các TĐ trong hệ thống.
Với mỗi QT thì đồng hồ logic vector đ−ợc khởi tại bằng 0 tại thời điểm bắt đầu thực hiện QT:
- Đồng hồ logic trong nội tại QT đ−ợc tăng nh− quy tắc 1.
- Quy tắc 2 đ−ợc biến đổi theo cách nh− sau: Khi QT Pi gửi TĐ m (sự kiện a) đến QT Pj, tem thời gian logic của m (chính là VCi(m)) cũng đ−ợc gửi cùng với m. Giả sử b là sự kiện nhận m tại QT Pj. Pj sẽ cập nhật đồng hồ logic vector VCj(b) với TSk(b) = Max { TSk(a), TSk(b)}. Pj sẽ giữ giá trị lớn nhất trong cặp của với k = 1 ... n và tăng đồng hồ logic vector của nó lên theo kết quả tính toán. Bằng cách đó, mọi thông tin về đồng hồ đ−ợc chuyền đến tất cả các QT bằng cách gửi các tem thời gian TSi trong TĐ. Rõ ràng rằng, nếu sự kiện a trong QT Pi xảy ra tr−ớc sự kiện b trong quá Pj thì VCi(a) < VCj(b), nghĩa là TSk(a) ≤ TSk(b) với mọi k và TSj(a) < TSj(b). Điều đó xẩy ra do có một đ−ờng chuyển nhân quả từ sự kiện a đến sự kiện b và sự kiện b có nhiều thông tin cập nhật hơn sự kiện a, tem thời gian đ−ợc truyền dọc theo đ−ờng đó và quy tắc để cập nhật luôn là chọn cái lớn hơn trong hai cái. Thêm vào nữa, đồng hồ logic của sự kiện kế tiếp sẽ đ−ợc tăng bởi sự kiện a. Vì vậy, TSj(b) phải lớn hơn TSj(a). Đối với những sự kiện rời rạc thì không thể có VCi(a) < VCj(b) trừ khi a → b bởi vì QT Pi (nơi xảy ra sự kiện a) sẽ đ−ợc cập nhật một cách tốt cho thời gian của mình hơn mọi −ớc l−ợng của các QT khác về thời gian hiện tại của QT Pi. Do đó, Ci(a) lớn hơn hoặc bằng với TSi trong những vector khác. Cũng nh− vậy, VCj(b) < VCi(a) nếu nh− b → a. Nói tóm lại là chúng ta có thể kết luận là hai sự kiện có thể có hay không mối quan hệ tr−ớc sau bằng cách so sánh vector thời gian của hai sự kiện đó.
Nếu VCi(a) < VCj(b), chúng ta có thể kết luận là sự kiện a xảy ra tr−ớc sự kiện b. Nếu không thì a và b đồng thời. Hình 3.11 đ−a ra một ví dụ của đồng hồ logic vector dùng mô hình không gian thời gian.