# David R. Jefferson - Virtual Time (Highlights)

## Metadata
**Review**:: [readwise.io](https://readwise.io/bookreview/61588846)
**Source**:: #from/readwise #from/zotero
**Zettel**:: #zettel/fleeting
**Status**:: #x
**Authors**:: [[David R. Jefferson]]
**Full Title**:: Virtual Time
**Category**:: #articles #readwise/articles
**Category Icon**:: 📰
**Highlighted**:: [[2026-06-24]]
**Created**:: [[2026-07-04]]
## Highlights
- Virtual time is a new paradigm for organizing and synchronizing distributed systems which can be applied to such problems as distributed discrete event simulation and distributed database concurrency control. ([Page 404](zotero://open-pdf/library/items/A7Y79AM5?page=0&annotation=X6FE9UDE)) ^1028174946
- It is not obvious how incoming messages at each process can be processed in timestamp order because they will not generally arrive in timestamp order, and, since we assume virtual times are real numbers, it is impossible for a process, on the basis of local information alone, to block and wait for the message with the “next” timestamp. ([Page 410](zotero://open-pdf/library/items/A7Y79AM5?page=6&annotation=K7U7AELS)) ^1028174947
- The only way to accomplish this is for the receiver to roll back to an earlier virtual time, canceling all intermediate side effects, and then to execute forward again, this time receiving the late message in its proper sequence. ([Page 411](zotero://open-pdf/library/items/A7Y79AM5?page=7&annotation=LQYAI7YT)) ^1028174948
- Whenever a process has processed all input messages in its input queue, its virtual clock is set to +irtf, and the process is said, by convention, to terminate. However, it is not destroyed because the arrival of a new messagelater may cause it to roll back and unterminate. ([Page 411](zotero://open-pdf/library/items/A7Y79AM5?page=7&annotation=NKNTHZK5)) ^1028174949
- We might describe the situation differently by saying that each process is constantly doing a “lookahead,” processing “future” messages from its input queue. ([Page 411](zotero://open-pdf/library/items/A7Y79AM5?page=7&annotation=A559TU24)) ^1028174950
- The natural scheduling rule is always to execute those processes whose local virtual clocks are farthest behind. ([Page 411](zotero://open-pdf/library/items/A7Y79AM5?page=7&annotation=JZQBBU8B)) ^1028174951
- Whenever a process sends a message,what actually happens is that a faithful copy of the messageis transmitted to the receiver’s input queue, and a negative copy, the antimessage, is retained in the sender’s output queue for use in case the sender rolls back. ([Page 413](zotero://open-pdf/library/items/A7Y79AM5?page=9&annotation=83GQ33F5)) ^1028174952
- Whenever a message and its antimessage occur in the same queue, they immediately annihilate one another. ([Page 414](zotero://open-pdf/library/items/A7Y79AM5?page=10&annotation=6MT6YUIK)) ^1028174953
- To “unsend” a message it suffices simply to transmit its antimessage. ([Page 414](zotero://open-pdf/library/items/A7Y79AM5?page=10&annotation=47QQWYLX)) ^1028174954