нити и волокна

Тема в разделе "Visual Basic", создана пользователем Admin, 19 окт 2007.

  1. Admin

    Admin Гость

    мне необходимо привести примеры программ, где применение нитей приводит к существенному повышению скорости их выполнения и обьяснить почему? То же самое для волокон. может кто сможет мне привести такие примеры и хотя-бы немножко обьяснить? :) Может у кого есть хорошие ссылки по этому поводу?
     
  2. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Єто про потоки чтоли?
     
  3. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    <!--QuoteBegin-Admin+19:10:2007, 19:14 -->
    <span class="vbquote">(Admin @ 19:10:2007, 19:14 )</span><!--QuoteEBegin-->мне необходимо привести примеры программ, где применение нитей приводит к существенному повышению скорости их выполнения и обьяснить почему
    [snapback]82422" rel="nofollow" target="_blank[/snapback]​
    [/quote]

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

    для многопроцессорных систем: прирост действительно возможен, но возросшая стоимость операции синхронизации для потоков выполнящихся на разных ядрах частенько съедает этот прирост.
     
  4. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--QuoteBegin-Kmet+19:10:2007, 22:35 -->
    <span class="vbquote">(Kmet @ 19:10:2007, 22:35 )</span><!--QuoteEBegin-->частенько съедает этот прирост
    [snapback]82435" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Факты в студию
     
  5. Admin

    Admin Гость

    Это о нитях. А волокна?
    А где взять примеры программ? Возможен вариант на другом языке, а я переведу в , но желательно (если есть конечно) привести пример на Visual Basic. :lol:
     
  6. Pasha

    Pasha Гость

    Для: Admin
    А что такое волокна?
     
  7. Pasha

    Pasha Гость

    Все намного хуже :lol: Fibers, Using Fibers.
    Для: Admin. Волокна не обеспечивают одновременности выполнения, только создают его видимость. Т.е. однопоточное приложение выполняет все нити на одном процессоре. Поэтому бонусов от них никаких.
     
  8. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    Для: sax_ol, European
    ну вообще-то, я имел ввиду достаточно известный факт, что пенальти от использования "средств синхронизация" (мьютексы, критические секции, условные переменные и т.д.) и доступа к разделяемой памяти много больше для потоков выполняющихся на разный ядрах. Это иногда привордит к достаточно комичным ситуациям, когда система разработаная с экстенсивным применением "средств синхронизации" на многопроцессорной системе работает в разы медленней.
     
  9. gerich

    gerich Гость

    Честно говоря всегда пологал,что многопоточное приложение работает быстрее, т.к. по-моему, на каздый поток выделяется определённое процессорное время, а в сумме на эти потоки выделяется в несколько раз больше времени.

    А про потоки-ВБ потоки практически невозможно сделать, точнее возможно, но они очень нестабильны(у меня максимум 10 сек работали)-попробуй АПИшные функции посмотреть.
    Ещё мозно поглядеть вот это-там один гений создаёт плагин к ВБ для создания чистых(не активиксы) dllки
    Как мне где-то написали, они могут пригодиться при создании потоков
     
  10. Pasha

    Pasha Гость

    <!--QuoteBegin-gerich+21:10:2007, 22:11 -->
    <span class="vbquote">(gerich @ 21:10:2007, 22:11 )</span><!--QuoteEBegin-->Честно говоря всегда пологал,что многопоточное приложение работает быстрее, т.к. по-моему, на каздый поток выделяется определённое процессорное время, а в сумме на эти потоки выделяется в несколько раз больше времени.
    [snapback]82546" rel="nofollow" target="_blank[/snapback]​
    [/quote]Количество времени, выделяемое процессу, не зависит от количества потоков в нем. Поэтому многопоточное приложение работает быстрее однопоточного только на многопроцессорной машине.
    <!--QuoteBegin-gerich+21:10:2007, 22:11 -->
    <span class="vbquote">(gerich @ 21:10:2007, 22:11 )</span><!--QuoteEBegin-->А про потоки-ВБ потоки практически невозможно сделать, точнее возможно, но они очень нестабильны(у меня максимум 10 сек работали)-попробуй АПИшные функции посмотреть.
    Ещё мозно поглядеть вот это-там один гений создаёт плагин к ВБ для создания чистых(не активиксы) dllки
    Как мне где-то написали, они могут пригодиться при создании потоков
    [snapback]82546" rel="nofollow" target="_blank[/snapback]​
    [/quote]6-й VB, о котором ты говоришь, вымер одновременно с выходом первого vb.net. Плагины для создания чистых длл под него - припарки мертвому. А нормальный современный vb.net вполне так поддерживает потоки.
     

Поделиться этой страницей