Я должен использовать поточную обработку и рекурсию вместе?

Я решаю свой вопрос. Я добавляю PATH = $ PATH: $ HOME / bin: /softwate/node-v10.14.2-linux-x64/bin в .bash_profile, чтобы он мог запустить скрипт оболочки, когда я закончу запуск своей системы. Но это не может начаться до входа пользователя. Итак, я связываю npm и узел с / use / bin - он запустится.

8
задан Martin 3 October 2008 в 13:59
поделиться

3 ответа

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

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

Самые большие созданные издержки от контекстного переключения (замораживающий один поток и загружающий контекст выполнения следующего), а также неудачные обращения в кэш, когда потоки делают задачи с другой памятью (если Ваш поток может использовать кэш ЦП эффективно).

12
ответ дан 5 December 2019 в 12:14
поделиться

Ваш лучший выбор состоял бы в том, чтобы создать пул потоков и затем использовать его 'прозрачно' для добавления узлов.

например, создайте 2 потока в программе, запускают, сделали, чтобы они ожидали на семафоре или событии. Когда у Вас есть узлы для добавления, Вы появляетесь, данные на очередь затем инициировали семафор. Это будит один из потоков, который выталкивает данные от очереди и выполняет обработку. (удостоверьтесь, что доступ к очереди ориентирован на многопотоковое исполнение - полностью синхронизировался с критическим разделом, является лучшим).

Общая производительность Вашего приложения медленнее, поскольку у Вас есть больше служебное в копировании данных очереди и выполнению дополнительных потоков, но если Вы раньше работали на одноядерном, Вы будете теперь работать 2. Это работает лучше всего, если потоковая обработка является дорогой.

2
ответ дан 5 December 2019 в 12:14
поделиться

Несомненно, например, Quicksort может быть запрограммирован многопоточный довольно легко и получить некоторое большое увеличение производительности в многоядерных системах и некоторые маленькие потери производительности на немногопоточном. Просто помните, что Вы добавляете наверху дважды теперь - после того как для стека экономят на рекурсии и однажды на потоке, поэтому если Вы делаете большое количество рекурсий затем, это могло бы сокрушить систему быстрее, чем немногопоточный подход.

0
ответ дан 5 December 2019 в 12:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: