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.