1. A method for managing memory accesses in a multiprocessor system, the method comprising carrying out operations within the system, the operations comprising: running a plurality of threads in parallel in a plurality of parallel processors; holding speculative writes in a cache memory, the holding including: providing a data storage in the cache memory to each of the plurality of threads; generating a read or write cache memory access footprint per a request of each of the plurality of thread accessing the provided data storage, the footprint including bits indicating: a type of the request of each of the plurality of threads, a size of a cache line associated with the request of each of the plurality of threads, an atomic operation code associated with the request of each of the plurality of threads, and what section of the cache line is to be accessed by the request of each of the plurality of threads; reading, by the each of the plurality of threads from the provided data storage, a first speculative write performed by the each of the plurality of threads and a second speculative write performed by a first thread spawned earlier than the each of the plurality of threads in an execution order of a program associated with the each of the plurality of threads; preventing the each of the plurality of threads from reading a third speculative write performed by a second thread spawned later than the each of the plurality of threads in the execution order of the program; maintaining, based on the first speculative write of the each of the plurality of threads, multiple data values in the cache line of the cache memory; allowing non-speculative writes to go to main memory; and maintaining a conflict record in the cache memory with respect to the speculative writes, the maintaining the conflict record including: performing a conflict checking, the performing including: evaluating whether there exists an overlap between the generated footprint and dirty bits of the cache line associated with each request of the plurality of threads; if there exists the overlap, determining that there exists no conflict; otherwise, determining that there exists the conflict; combining the multiple data values in the cache line associated with each request of the plurality of threads if there exists no conflict between the multiple data values.