Дано: есть задача, состоящая из двух несвязанных подзадач. Есть одноядерный проц. И 2 варианта решения задачи:
1) написать прогу (одну функции), решающую сначала подзадачу 1, а потом подзадачу 2, друг за другом последовательно в одном потоке.
2) написать прогу из двух функций, каждая функция будет решать свою подзадачу, и вызвать эти функции одновременно, то есть создав для выполнения каждой отдельный поток и запустив параллельное выполнение.
Вопрос: в каком случае вся задача (обе подзадачи) целиком будет решена быстрее?
UPDATE: дополнительные вопросы:
1)
professorweb.ru/my/csharp/thread_and_files/1/1_16.phpЗначение максимально допустимого количества потоков в пуле может изменяться. В случае двуядерного ЦП оно по умолчанию составляет 1023 рабочих потоков и 1000 потоков ввода-вывода.
Для чего на двухъядерном проце 2023 потока?
2)
regfordev.blogspot.ru/2010/12/thread-pool.htmlС добавлением большего числа ядер задачи начинают делиться на более мелкие кусочки. Соответственно рабочие потоки чаще обращаются в глобальную очередь, нагрузка на которую явно возрастает – дает о себе знать блокировка.
Увеличение числа ядер в системе аналогично увеличению числа участников, так как задачи будут делиться на более мелкие кусочки и вследствие частого обращения в глобальную очередь – увеличится необходимость в синхронизации.
Не понял, "С добавлением большего числа ядер задачи начинают делиться на более мелкие кусочки" - это как? Вот у меня есть задача, которую моя прога выполняет в одном потоке. Если я запущу свою прогу на многоядерном проце, то моя задача поделится на много кусков? Каким образом? Она же однопоточная.