0

Можно создать дубликат:
Why should I use a thread vs using a process?Долгие задачи, должен ли я запускать их в другом потоке или другом процессе?

У меня есть некоторые долго выполняющиеся задачи, они потребляют процессор и память сильно. Должен ли я запускать их в другом потоке или другом процессе? И в чем преимущество каждого варианта?

+2

Это зависит от того, что вы подразумеваете под «длинным ходом» ... 10 секунд, 20 минут, 5 дней? – Kiril

+0

@ Lirik несколько минут. – CuiPengFei

ответ

1

Это зависит от того, какие операции вы пытаетесь сделать.

В дополнение к тому, что упоминается Why should I use a thread vs. using a process?, я хотел бы добавить, что потоки разделяют память о процессе, в котором они являются частью. С другой стороны, процессы не обмениваются памятью. Каждый процесс имеет собственное пространство памяти в стеке.

Если вы планируете работать с одними и теми же данными (возможно, по отдельным частям), я рекомендую вам делать это с помощью потоков. Каждый поток работает на куске данных.

Если операции полностью не связаны, используйте процессы. Я знаю, что это расплывчато; но если вы не обмениваетесь данными, а операции не должны быть сериализованы, вы можете использовать процессы.

Обычно одно приложение (процесс) генерирует несколько потоков. Если у вас несколько приложений, каждое приложение является процессом и имеет собственное адресное пространство.