Expressing and managing data locality is important today and will be even more so on the next
generation of machines. This thesis presents abstractions for achieving high performance with
shared memory parallel applications. It identifies several memory management idioms for NUMA
machines and the development of the thread affinity model for OpenMP. The memory management
idioms and the thread affinity model are shown to support the parallelization with
object-oriented abstractions.