Представьте, что у меня есть две задачи, каждая из которых требует 2 секунды, чтобы закончить работу.fork vs thread на одном сердечнике
В этом случае, если я создаю два потока для каждого из них, а мой компьютер одноядерный, это не сэкономит время. Я прав ?
Что делать, если я использую fork
для создания двух процессов (машина по-прежнему одноядерна), и каждый процесс отвечает за одну задачу? Может ли это сэкономить в любое время?
Если нет, то у меня есть вопрос:
В текущей современной машине (включая многоядерный), если у меня есть несколько тяжелых задач, какой метод следует использовать?
- fork?
- нить?
- fork + thread, что означает создание некоторых процессов и каждый процесс содержит несколько потоков?
Вы не будете экономить время в любой из этих комбинаций. Если задание занимает 2 секунды, требуется 2 секунды. Один метод может быть более расточительным, чем другой (сколько времени вы тратите на переключение контекстов, ожидая блокировок и т. Д.). Многие из них зависят от реализации и не имеют общего ответа, я думаю. –