Пока один поток ждет своих данных другой уже получил и может продолжить работу
Если они будут в одном, то даже если поток имеет данные он не может начать работу пока другой не закончит свою
cpu-heavy задачи нет смысла разделять по потокам, даже при наличии hyper-threading, тк переключние между задачами будет занимать много времени и ресурсов
Задачи, которые в основном ждут данных, - имеет смысл
Пока один поток ждет своих данных другой уже получил и может продолжить работу
Если они будут в одном, то даже если поток имеет данные он не может начать работу пока другой не закончит свою