It’s more efficient for memory until you start working with different data. Threads also rely on the same syscall on Linux, clone(2), but they don’t share the entire context by default, so they’re more lightweight. It is recommended to use pthreads(3) API instead of fork(2).
Also, if you care about Windows, threads are far lighter than processes on that platform. Starting a new process is relatively slow compared to other platforms.
If you fork a process, then it’s the two separate processes but sharing the same memory with copy-on-write mapping.
Is that actually more efficient if I need my child process to do something different with different data?
It’s more efficient for memory until you start working with different data. Threads also rely on the same syscall on Linux, clone(2), but they don’t share the entire context by default, so they’re more lightweight. It is recommended to use pthreads(3) API instead of fork(2).
Also, if you care about Windows, threads are far lighter than processes on that platform. Starting a new process is relatively slow compared to other platforms.
Ah thx for the info