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

Возможный дубликат:
Почему следует использовать поток, а не процесс?

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


person Cui Pengfei 崔鹏飞    schedule 07.02.2012    source источник
comment
Это зависит от того, что вы подразумеваете под продолжительным бегом... 10 секунд, 20 минут, 5 дней?   -  person Kiril    schedule 07.02.2012


Ответы (1)


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

В дополнение к тому, что Почему я должен использовать поток, а не поток? используя процесс? упоминает, я хотел бы добавить, что потоки совместно используют память процесса, частью которого они являются. С другой стороны, процессы не разделяют память. Каждый процесс имеет собственное пространство памяти в стеке.

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

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

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

person Adrian    schedule 07.02.2012