На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! В разделе обсуждаются следующие темы:
1) Процесс разработки программного обеспечения.
2) Определение требований к программному обеспечению.
3) Составные части и процесс проектирования (см. Шаблоны проектирования).
4) Документирование программного продукта(проекта).
5) Руководство разработкой программного обеспечения.
6) Проектирование пользовательского интерфейса.
7) Контроль версий проекта (см. Управление версиями в Subversion, Стратегии использования svn).
Модераторы: ElcnU
  
> Два потока одно ядро, Быстрее или нет
    или наоборот медленнее , а если не два потока а 4 или 18?
    Вопрос из интервью, мне кажется он задачи зависит , ну понятно
    что на switch context потеря будет, а когда профит будет или не будет.
    на всакий случай еще раз условие -
    Цитата
    Ядро одно
    .

    Это на прямую к С/С++ не относиться, но другого места я не нашел .
    Просьба без холиваров ;)
      Если поток обрабатывает цифры то будет однозначно меньше так как времени процессор будет тратить меньше. А вот если поток ждёт внешнее событие, то тут многопоточность будет быстрее. Правда если ожидание события можно заменить на асинхронный вызов или периодический опрос, то тогда однопоточный вариант будет выигрывать. Так как по помимо переключения потока потоки ещё тратят время на синхронизацию. А синхронизация основана барьерах, которые задерживают приостанавливают поток на время. Да и вопрос синхронизации довольно сложный так как в нём могут возникать гонка процессов и дедлок - т.е. из-за кривой архитектуры многопоточное приложение может зависать и это плохо поддаётся тестированию.
      Правильный обед должен состоять из 5 блюд приготовленных из 33 ингредиентов.
        Цитата Pavia @
        А вот если поток ждёт внешнее событие, то тут многопоточность будет быстрее.

        To есть если ожидание(thread sleep) больше чем переключения потока плюс время на синхронизацию ? тогда с потоками быстрее? так?

        A если алоцируешь память, скажем один раз блок в 10 мега или 10раз по одному
        мега, или 100 раз по 100кило байт, тогда как ? Thread stack тут поможет ?
          settler, объясню на пальцах. Однозначного ответа нет. Ибо данный вопрос зависит напрямую от контекста решаемых задач. Это аксиома!

          А вот теперь объяснение ...

          Комп, в процессе соей работы, может выполнять ряд разнотипных задач - вычисления, ввод-вывод, передачу по сети, передачу на устройства & etc. Некоторые задачи можно выполнять асинхронно. Именно на них и базируется попытка получения профита при многопоточном, да и много-процессном выполнении. Возьмем к примеру ввод-вывод на современном RAID-контроллере. Задачу по записи достаточно большого объема информации он решает асинхронно. Но! Пока он ее решает - комп (вернее CPU и прочие устройства могут выполнять иные функции). При решении задач общего характера - это учитывать надо... Вощем см. мой пост на RuSO, там многозадачность расписана, а потоки это или процессы - дело десятое.
          Мои программные ништякиhttp://majestio.info
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script Execution time: 0,0707 ]   [ 14 queries used ]   [ Generated: 15.08.18, 16:46 GMT ]