The purpose of this project is to investigate timestamping as a paradigm for synchronization. The methodology is to develop a branching time scale which permits the specification of sequential and concurrent activities, which in turn can be performed either atomically or non-atomically. This time scale will then be used as the basis for deriving the semantic properties of blocking and timestamping forms of synchronization and identifying the differences between them. With this new semantic framework, new language level synchronization primitives which can automatically generate timestamping information will be suggested. Finally, the practicality of embedding this sort of timestamping mechanism in systems for distributed computation will be investigated. The result of this project may suggest new ways in which computer programs can make efficient use of geographically dispersed computing resources.