About multithreading: When a process gets forked, any existing threads will not exist on the new forked process. To solve this we use forkable threads that are notified when the fork occurs and will automatically convert themselves into real runnable threads. On the master process, these forkable threads will be fake threads that are executed on the main thread and will block the critical path.