і безліч інших ресурсів. Процеси ж, реклама, яка паралельно, спільно використовують фізичну пам'ять, диски та інші ресурси. Неважко помітити певну аналогію в роботі процесів і потоків. Більше того, потоки успадкували деякі властивості процесів, через що їх досить часто називають В«спрощені процесиВ». У зв'язку з існуванням потоків з'явився термін багатопоточність. Многопоточносью називають властивість платформи або програми, що полягає в тому, що породжений в операційній системі процес може складатися з декількох потоків, що виконуються без приписаного порядку в часі, тобто паралельно.
Необхідно зробити обмовку, що багатопоточність в різних системах реалізується не тільки конкретними API-інтерфейсами, а й самими підходами до її організації. У рамках даної курсової роботи буде розглядатися багатопоточність виключно в Windows-системах. p align="justify"> Звичайно ж, один процесор може виконувати тільки один потік інструкцій, і саме тому В«справжняВ» багатопоточність, коли потоки команд виконуються дійсно паралельно і незалежно, в чистому вигляді практично ніде не зустрічається. Як правило, число процесорів значно менше числа потоків в системі. Через це операційній системі доводиться емулювати паралельну роботу процесорів. Така емуляція називається псевдопараллелізмом або псевдомноготочностью. У цьому випадку потоки інструкцій не виконуються паралельно. Час роботи процесора розбивається на невеликі інтервали, які називаються квантами. Процесор виділяє кванти на кожен потік по черзі (розподіл відбувається системно, і програміст може впливати на цей розподіл лише непрямим чином) і швидко переключається між потоками, створюючи ілюзію багатопоточності. За таких перемиканнях, виконання поточного потоку призупиняється, а весь вміст регістрів процесора зберігається в спеціальній області пам'яті. Коли черга повернеться до цього потоку, вміст регістрів повністю відновиться і робота колись зупиненого потоку продовжиться, немов вона і не переривалася. p align="justify"> Не можна сказати, що потоки, що виконуються в одному процесі, є незалежними. Вони мають одне і те ж адресний простір, що допускає можливість спільного використання глобальних змінних. Будь потік має доступ до будь-якого адресою комірки пам'яті в адресному просторі даного процесу, а значить, він може прати, записувати і зчитувати інформацію з стека будь-якого іншого потоку. Потоки поділяють не тільки адресний простір, але і відкриті файли, дочірні процеси, сигнали і т.д., адже якщо б такого поділу даних не було, то це були б окремі самостійні процеси. Концепція потоків полягає в тому, щоб декілька потоків могли спільно використовувати певний набір ресурсів і досягати поставлену перед ними мету в тісній взаємодії. br/>
2. БІБЛІОТЕКА ПАРАЛЕЛЬНИХ ЗАВДАНЬ (TPL)
Як вже згадувалося раніше, одним з найбільш важливих засобів, впроваджених у версію 4.0 середовища. NET Framework, є бібліоте...