:: Меню ::

Головна
  • Про сайт
  • Введення
  • Середовище програмування VB .NET: Visual Studio .NET
  • Вирази, оператори і передача управління
  • Класи і об'єкти
  •  Спадкоємство і інтерфейси
  • Обробка подій і делегати
  • Обробка помилок в VB .NET
  • Форми Windows, графічний вивід і друк
  • Уведення-виведення
  •  Багатопотокові застосування
  • Підтримка баз-даних в VB .NET
  • Короткий огляд ASP .NET
  • Складки .NET, установка додатків і COM Interop
  • Книга для гостей
    Контакти
    Добавити у вибране

    :: Друзі ::

     
     

    :: Лічильники ::

    = =

     

     

     

     

    Багатопотокові застосування

    • Знайомство з багатопоточністю
    • Домени додатків
    • Створення потоків
    • Метод Join
    • Імена потоків, Currentthread і Threadstate
    • Вікно потоків
    • Припинення потоку
    • Завершення або переривання програмних потоків
    • Припинення і знищення потоків
    • Фонові потоки (демони)
    • Серйозніший приклад: витягання даних з коди HTML
    • Головна небезпека (загальні дані)
    • Вирішення проблеми: синхронізація
    • Команда Synclock і клас Monitor
    • Взаємне блокування
    • Спільна робота з даними у міру їх створення
    • Багатопоточність в графічних програмах
    • Наступний крок: кнопка Show Count
    • Чому при багатопотоковому програмуванні виникає стільки проблем?

    Багатозадачність в сучасних операційних системах сприймається як щось само собою зрозуміле [ До появи Apple OS X на комп'ютерах Macintosh не було сучасних багатозадачних операційних систем. Правильно спроектувати операційну систему з повноцінною багатозадачністю дуже важко, тому за основу OS X довелося узяти систему Unix. ]. Користувач розраховує на те, що при одночасному запуску текстового редактора і поштового клієнта ці програми не конфліктуватимуть, а при прийомі електронної пошти редактор не перестане працювати. При одночасному запуску декількох програм операційна система швидко перемикається між програмами, по черзі надаючи їм процесор (якщо, звичайно, на комп'ютері не встановлено декілька процесорів). В результаті створюється ілюзія одночасної роботи декількох програм, оскільки навіть краща друкарка (і найшвидше Інтернет-з'єднання) не дожене за сучасним процесором.

    Багатопоточність (multithreading) в якомусь сенсі можна розглядати як наступний рівень багатозадачності: замість того, щоб перемикатися між різними програмами, операційна система перемикається між разнимі частямі однієї програми. Наприклад, багатопотоковий поштовий клієнт дозволяє приймати нові повідомлення електронної пошти під час читання або складання нових повідомлень. У наш час багатопоточність теж сприймається багатьма користувачами як належне.

    У VB нормальної підтримки багатопоточності не було ніколи. Правда, в Vb5 з'явився один з її різновидів — сумісна потокова модель (apartment threading). Як ви незабаром побачите, сумісна модель надає в розпорядження програміста частину переваг багатопоточності, але не дозволяє використовувати всі можливості повною мірою. Рано чи пізно з учбової машини доводиться пересідати на справжню, і VB .NET став першою версією VB з підтримкою вільної багатопотокової моделі.

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

    Тому що в багатопотокових застосуваннях можуть виникати дуже хитрі помилки, які непередбачувано з'являються і зникають (а такі помилки найважче відладжувати).

    Чесно попереджаємо: багатопоточність — одна з складних областей програмування. Щонайменша неуважність приводить до появи невловимих помилок, на виправлення яких йдуть астрономічні суми. З цієї причини в справжньому розділі приведено немало поганих прикладів — ми навмисно написали їх так, щоб продемонструвати характерні помилки. У цьому і полягає найбезпечніший підхід до вивчення багатопотокового програмування: ви повинні уміти розгледіти потенційні проблеми, коли на перший погляд все працює нормально, і знати шляхи їх рішення. Якщо ви хочете використовувати прийоми багатопотокового програмування, без цього не обійтися.

    У цьому розділі буде закладена надійна основа для подальшої самостійної роботи, але описати багатопотокове програмування у всіх тонкощах ми не зможемо — тільки друкарська документація по класах простору імен Threading займає більше 100 сторінок. Якщо ви захочете освоїти багатопотокове програмування на більш високому рівні, звертайтеся до спеціалізованих книг.

    Але яким би небезпечним не було багатопотокове програмування, при професійному вирішенні деяких завдань воно незамінне. Якщо ваші програми не використовуватимуть багатопоточність там, де це доречно, користувачі сильно розчаруються і віддадуть перевагу іншому продукту. Наприклад, лише в четвертій версії популярної поштової програми Eudora з'явилися багатопотокові можливості, без яких неможливо собі представити жодну сучасну програму для роботи з електронною поштою. На той час, коли в Eudora з'явилася підтримка багатопоточності, багато користувачів (у тому числі і один з авторів цієї книги) перейшли на інші продукти.

    Нарешті, в .NET однопоточних програм просто не буває. Всі програми .NET є багатопотоковими, оскільки складальник сміття виконується як низькопріоритетний фоновий процес. Як показано нижче, при серйозному графічному програмуванні в .NET правильна взаємодія програмних потоків допомагає запобігти блокуванню графічного інтерфейсу при виконанні програмою тривалих операцій.

     




    :: Наша кнопка ::

    Отримати код:

    Підтримайте наш сайт і розмістіть нашу кнопку на своєму ресурсі.


    :: Реклама ::

    Скачати безкоштовно програму Microsoft Front Page 2003


    :: Посилання ::

    -


     

     

     


    Copyright ©