Курсова робота на тему: «ПОТОКИ В VISUAL BASIC»

Зміст

Вступ    3

1.1.    Поняття Багатопоточності    5

1.2.Імітатор Багатопоточності    6

1.3.Вирішення проблем Багатопоточності    10

2.Service Pack 2    11

3.Угода про потоки    15

3.1.Модель одиночного потоку    15

3.2.Модель Apartment Threading    16

3.3.Модель вільних потоків    16

4.Ідентифікатор інтерфейсу    26

Висновок    29

СПИСОК ВИКОРИСТАНИХ ЛІТЕРАТУРНИХ ДЖЕРЕЛ    30

 

Вступ

З появою оператора AddressOf, частина індустрії ПО почала орієнтуватися на авторів, що показують як з використанням Visual Basic вирішувати раніше неможливі завдання. Інша частина швидко охопила консультантів, що допомагають користувачам, що мають проблеми при вирішенні таких завдань.

Проблема не в Visual Basic або в технології. Проблема в тому, що більшість авторів застосовують один і теж правило до AddressOf методикам, що більшість компаній по розробці ПО рахують, що якщо Ви повинні щось зробити, то Ви зможете. Ідея про те, що застосування найновішої і останньої технології повинне, за визначенням, бути самим кращим вирішенням проблеми, широко поширена в індустрії ПО. Ця ідея невірна. Розгортання технології повинне керуватися перш за все проблемою, яку необхідно вирішити, а не технологією, яку хтось пробує Вам навіяти.

Дуже погано, що через те, що компанії часто нехтують згадкою про обмеження і недоліки їх інструментальних засобів, автори іноді бувають не в змозі звернути увагу читачів на наслідки деяких методик, які вони описують. І журнали і книги іноді нехтують своєю відповідальністю, щоб упевнитися, що практика програмування, яку вони описують, є прийнятною [1.c.475].

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

  1. Поняття Багатопоточності

Кожен, хто використовує Windows, знає, що Windows здатне робити більш ніж одну річ одночасно. Може одночасно виконувати декілька програм, при одночасному програванні компакт-диска, посилці факсу і пересилці файлів. Кожен програміст знає (або повинен знати) що ЦЕНТРАЛЬНИЙ ПРОЦЕСОР комп’ютера може тільки виконувати одну команду одночасно (проігноруємо існування багатопроцесорних машин). Як єдиний ЦЕНТРАЛЬНИЙ ПРОЦЕСОР може виконувати безліч завдань?

Це робиться швидким перемиканням між багатьма завданнями. Операційна система містить в пам’яті всі програми, які запущені зараз. Це дозволяє ЦЕНТРАЛЬНОМУ ПРОЦЕСОРУ виконувати програми по черзі. Кожного разу відбувається перемикання між програмами, при цьому міняється вміст внутрішніх регістрів, включаючи покажчик команди і покажчик вершини стека. Кожне з таких “завдань” називається потоком виконання (thread of execution) [4.c.374-389].

У простій багатозадачній системі, кожна програма має єдиний потік. Це означає, що ЦЕНТРАЛЬНИЙ ПРОЦЕСОР починає виконання команд на початку програми і продовжує слідуючи інструкціям в послідовності, певною програмою до тих пір, поки програма не завершується.

Скажімо, програма має п’ять команд: А B C D і E, які виконуються послідовно (ніяких переходів немає в даному прикладі). Коли додаток має один потік, команди завжди виконуватимуться в точно тому ж самому порядку: A, B, C, D і E. Дійсно, ЦЕНТРАЛЬНИЙ ПРОЦЕСОР може задати час для виконання других команд в других програмах, але вони не впливатимуть на це застосування, якщо немає конфлікту над загальними ресурсами системи, але це вже окрема тема для розмови.

Просунута багатопотокова операційна система типу Windows дозволяє додатку виконувати більш ніж один потік одночасно. Скажімо, команда D в нашому типовому застосуванні могла створити новий потік, який стартував командою B і далі виконував послідовність команд C і E. Перший потік був би все ще A, B, C, D, E, але коли команда D виконається, виникне новий потік, який виконає команди А B, C, E (тут команди D вже не буде, інакше ми отримаємо ще один потік).

У якому порядку слідуватимуть команди в цьому застосуванні?

Це могло б бути:

Thread 1  A  B  C  D    E

Thread 2       B    C  E

Або так:

Thread 1  A  B  C  D      E

Thread 2       B  C    E

Або отак:

Thread 1  A  B  C  D      E

Thread 2       B  C  E

Другими словами, коли Ви починаєте новий потік виконання в додатку, Ви ніколи не можете знати точний порядок, в якому команди в двох потоках виконаються відносно один одного. Два потоки повністю незалежні [5.c.395-402].

1.2.Імітатор Багатопоточності

Розглянемо проект MTDemo:

Проект містить один модуль коди, в якій міститься дві глобальних змінних:

‘ MTDemo – Multithreading Demo program

‘ Copyright © 1997 by Desaware Inc. All Rights Reserved

Option Explicit

Public GenericGlobalCounter As Long

Public TotalIncrements As Long

‘ Цей проект містить одну форму – frmMTDemo1, яка містить

‘ наступний код:

‘ MTDemo – Multithreading Demo program ‘ Copyright © 1997 by Desaware Inc. All Rights Reserved

Option Explicit

Dim State As Integer

‘ State = 0 – Idle

‘ State = 1 – Loading existing value

‘ State = 2 – Adding 1 to existing value

‘ State = 3 – Storing existing value

‘ State = 4 – Extra delay

Dim Accumulator As Long

Const OtherCodeDelay = 10

Private Sub Command1_Click()

Dim f As New frmMTDemo1

ЗАВАНТАЖИТИ

Для скачування файлів необхідно або Зареєструватись

Potoky V Visual Basic (66.6 KiB, Завантажень: 0)

Сторінка: 1 2 3 4 5 6 7
завантаження...
WordPress: 23.24MB | MySQL:26 | 1,724sec