1. A method for managing memory accesses in a multiprocessor system, the method comprising carrying out operations within the system, the operations comprising: running threads in parallel in a plurality of parallel processors; holding speculative writes in a cache memory; and allowing non-speculative writes to go to main memory.