Job system uses std::atomic instead of std::mutex for synchronization