The advent of multicore platforms has led to renewed interest in multiprocessor real-time systems, with considerable recent work directed at scheduling issues. Unfortunately, the equally-important topic of synchronization, in comparison, has been somewhat neglected. Indeed, the most influential work on this topic was done decades ago, at a time when multiprocessor real-time applications were deemed to be mostly of "academic" interest only. The objective of this project is to re-visit the issue of real-time synchronization in light of the ongoing multicore revolution, with the goal of devising mechanisms that can be practically applied. The fundamental thesis of this project is "simplicity wins." Specifically, real-time synchronization mechanisms, though generally applicable, should be designed with common-case scenarios in mind, using simple techniques that can be reasonably analyzed. This begs the question: What is the common case? To determine this, trace data is collected in this project concerning the synchronization behavior of a wide range of real-time applications. This data is then being used to produce real-time synchronization benchmarks, which will guide development efforts. These efforts consider: real-time multiprocessor locking protocols; techniques for supporting read-mostly synchronization; the use of transactional memory and non-blocking synchronization in real-time applications; and synchronization techniques that can be applied in settings where both real-time and non-real-time components co-exist. Broader impacts include joint research with industry colleagues at AT&T, Honeywell, IBM, Intel, and Sun, and the development of publicly-available open-source software that can be used by other institutions for research and teaching purposes.