4 ms·
> DTHREADS achieves cross-thread memory isolation by replacing threads with processes. In a multithreaded program running with pthreads, threads share all memor
by kjeetgill 8y ago
> DTHREADS achieves cross-thread memory isolation by replacing threads with processes. In a multithreaded program running with pthreads, threads share all memory except for the stack. Changes to memory immediately become visible to all other threads. Threads share the same file descriptors, sockets, device handles, and windows. By contrast, because DTHREADS runs threads in separate processes, it must manage these shared resources explicitly.
They seem to be using a processes' copy-on-write memory to keep the dthreads isolated until commit points. At commit points they deterministically merge the pages back.
Algorithmic errors are still possible due to data races, but they present themselves more like logic errors because they're deterministic. They'll fail the same everytime.
Interesting.