1 2 3 4 5 6 7 8 9 10 Дніпровський національний університет імені О. Гончара _____________________________________________________________________________________________ (повна назва кафедри) КУРСОВА РОБОТА з ___________________________________________________________ (назва дисципліни) на тему:_____________________________________________________ ____________________________________________________________ Студента (ки) _____ курсу ______ групи напряму підготовки_________________ __________________________________ __________________________________ спеціальності______________________ __________________________________ _________________________________ (прізвище та ініціали) Керівник ___________________________ ____________________________________ (посада, вчене звання, науковий ступінь, прізвище та ініціали) Кількість балів____________ Національна шкала ________ Оцінка ECTS _____________ Члени комісії : ___________ _______________________________ (підпис) (прізвище та ініціали) ___________ _____________________________ (підпис) (прізвище та ініціали) ____________ ______________________________ (підпис) (прізвище та ініціали м. Дніпро, 2018 р. Зміс КУРСОВА РОБОТА 1 Вступ 4 Завдання на курсову роботу 5 1.1.Потоки 6 1.1.1. Визначення потоку 6 1.1.2.Створення потоку 10 1.1.3.Завершення потоку 11 1.1.4.Зупинка та відновлення потоку 12 1.1.5.Пріоритети потоків 13 1.1.6.Визначення моменту закінчення потоку 13 1.1.7.Передача аргументу потоку 14 1.1.8.Властивість IsBackground 15 1.2.Процеси 15 1.2.1.Визначення процесу 15 1.2.2.Запуск процесу 16 1.2.3.Завершення процесу 17 1.3.Синхронізація 17 1.3.1.Визначення синхронізації 17 1.3.2.М'ютекс 18 1.3.3.Семафор 20 1.3.4.Події 23 1.3.5.Клас Monitor і блокування 24 1.3.6.Методи Wait(), Pulse() і PulseAll() 25 1.3.7.Атрибут MethodImplAttribute 26 1.3.8.Клас Interlocked 27 1.4.Відображення файлу у пам’ять 27 1.4.1.Концепція механізму відображення файлу у пам’ять 27 1.4.2.Класи простору імен System.IO.MemoryMappedFiles 28 1.4.3.Постійні зіставлені в пам’яті файли. Метод CreateFromFile() 30 1.4.4.Непостійні зіставлені в пам’яті файли. Метод CreateNew() 31 1.4.5.Метод OpenExisting() 32 1.5.Канали передачі даних 33 1.5.1.Способи передачі даних між процесами 33 1.5.2.Зв’язки між процесами 34 1.5.3.Анонімні канали 36 1.5.4.Іменовані канали 38 2.Практична частина 41 2.1.Створення ігрової розмітки 41 2.2.Створення ігрового поля 44 2.3.Створення «власного» ігрового поля 55 2.4.Створення ігрового поля суперника 62 2.5.Створення керуючого процесу 65 2.6.Результати роботи програми 74 Вступ 4 Завдання на курсову роботу 5 1. Теоретична частина 6 1.1. Потоки 6 1.2. Процеси 15 1.3. Синхронізація 17 1.4. Відображення файлу у пам’ять 26 1.5. Канали передачі даних 32 2. Практична частина 40 2.1. Створення ігрової розмітки 40 2.2. Створення ігрового поля 43 2.3. Створення «власного» ігрового поля 55 2.4. Створення ігрового поля суперника 62 2.5. Створення керуючого процесу 65 2.6. Результати роботи програми 74 Висновок 77 Список використаної літератури 78 ВступОдним з ключових аспектів у сучасному програмуванні є багатопоточність. Ключовим поняттям при роботі з багатопоточнітю є потік. Потік предствляет деяку частину коду програми. При виконанні програми для кожного потоку виділяється певний квант часу. І за допомогою багатопоточності ми можемо виділити в додатку кілька потоків, які будуть виконувати різні завдання одночасно. Якщо у нас, припустимо, графічний додаток, яке посилає запит до якогось сервера або зчитує і обробляє величезний файл, то без багатопоточності у нас би блокувався графічний інтерфейс на час виконання завдання. А завдяки потокам ми можемо виділити відправку запиту або будь-яку іншу задачу, яка може довго оброблятися, в окремий потік. Тому, наприклад, клієнт-серверні додатки (і не тільки вони) практично не мислимі без багатопоточності. 1 2 3 4 5 6 7 8 9 10 |