- •Гугл-дока для екзамену Архітектура компютера. Програмне забезпечення
- •1. Поняття платформи. Структура та основні складові .Net Framework.
- •2. Функції та структура clr.
- •3. Поняття збірки. Метадані. Схема виконання .Net-додатку в clr.
- •4. Система типів даних мови c#. Типи-значення.
- •5. Система типів даних мови c#. Типи-посилання.
- •6. Масиви в c#: одновимірні, багатовимірні, ступеневі. Методи та властивості класу Array.
- •7. Методи в c#: модифікатори доступу, передача параметрів, перевантаження, наслідування.
- •7. Методи в c#: модифікатори доступу, передача параметрів, перевантаження, наслідування.(Второй вариант)
- •8. Багатопоточне програмування засобами .Net. Структура процесу ос Windows. Клас Thread.
- •9. Характеристика засобів синхронізації потоків та процесів .Net Framework.
- •10. Об’єкти синхронізації потоків .Net Monitor та ReaderWriterLock.
- •11. Об’єкти синхронізації потоків .Net lock та ManualResetEvent.
- •12. Об’єкти синхронізації потоків .Net AutoResetEvent та Mutex.
- •13. Обробка виключних ситуацій в мові c#, основні класи та методи .Net щодо обробки виключень.
- •14. Віртуальні функції та абстрактні класи в мові c#.
- •15. Статичні конструктори, поля та методи класів в мові c#.
- •17. Інтерфейси в мові c#. Порівняння з абстрактними класами. Сфера застосування інтерфейсів.
- •18. Огляд колекцій в .Net. Основні інтерфейси, що лежать в основі доступу до колекцій.
- •19. Колекція ArrayList. Методи та властивості. Переваги та недоліки використання.
- •20. Колекції Stack та Queue. Методи та властивості.
- •21. Колекція BitArray. Методи та властивості. Переваги та недоліки використання.
- •22. Колекція HashTable. Методи та властивості. Переваги та недоліки використання.
- •23. Характеристика generic-колекцій .Net
- •24. Колекція LinkedList. Методи та властивості.
- •26. Групи класів доступу до даних технології ado.Net.
- •27. Характеристика від’єднаних класів технології ado.Net.
- •28. Характеристика під’єднаних класів технології ado.Net.
- •29. Завантаження бінарних об’єктів у базу даних та вивантаження їх із неї.
- •30. Транзакції в базах даних. Інтерфейс транзакцій технології ado.Net.
- •31. Особливості мережевих протоколів tcp та udp. Поняття порту, адреси, сокету.
- •32. Характеристика сокетів зі з’єднанням. Інтерфейс класу Socket для даного типу сокетів.
- •33. Характеристика сокетів без з’єднання. Інтерфейс класу Socket для даного типу сокетів.
- •34. Характеристика асинхронних та синхронних сокетів. Інтерфейс класу Socket для даного типу сокетів.
- •35. Узагальнений алгоритм взаємодії клієнта та сервера при синхронному сокетному способі обміну даними зі з’єднанням. Інтерфейс класу tcpListener.
- •36. Узагальнений алгоритм взаємодії клієнта та сервера при синхронному сокетному способі обміну даними без з’єднання. Інтерфейс класу tcpClient..
- •37. Загальна схема та реалізація багатопоточного сокетного сервера зі з’єднанням.
- •38. Поняття сервіс-орієнтованого архітектури. Web-сервіси: переваги та недоліки, стандарти в основі Web-сервісів.
- •Стандарти, що використовуються веб-службами
- •Переваги веб-служб
- •Недоліки веб-служб
- •39. Компоненти архітектури Web-сервісів. Протоколи для Web-сервісів. Приклад реалізації серверної частини Web-сервісу.
- •Используемые стандарты
11. Об’єкти синхронізації потоків .Net lock та ManualResetEvent.
lock
За допомогою ключового слова lock, блок операторів можна помітити, як важливий фрагмент, отримавши блокування взаємного виключення, виконавши оператор, і пізніше знаяти блокування. Оператор має наступний вигляд:
Object thisLock = new Object(); lock (thisLock) { // Critical code section. }
Ключове слово lock не дозволить одному потоку здійснити доступ до критичної секції коди, поки в ньому знаходиться інший потік. При спробі входження іншого потоку в критичну секцію, потрібно буде дочекатися зняття блокування об’єкта.
Будь-який об’єкт, який доступний потокам, що взаємодіють, може бути використаним як об’єкт синхронізації, якщо це об’єкт типу посилання.
ManualResetEvent
ManualResetEvent дозволяє потокам взаємодіяти один з одним шляхом передачі сигналів. Зазвичай ця взаємодія стосується завдання, яку один потік повинен завершити до того, як інший продовжить роботу.
Коли потік починає роботу, яка повинна бути завершена до продовження роботи інших потоків, він викликає метод Reset для того, щоб помістити ManualResetEvent в несигнальний стан. Цей потік можна розуміти як контролюючий ManualResetEvent. Потоки, які викликають метод WaitOne в ManualResetEvent, будуть заблоковані, очікуючи сигналу. Коли контролюючий потік завершить роботу, він викличе метод Set для повідомлення про те, що очікуючі потоки можуть продовжити роботу. Всі очікуючі потоки звільняються.
Можна контролювати початковий стан ManualResetEvent, передавши конструктору логічне значення, значення true, якщо початковий стан сигнальне, і false, в іншому випадку.
Події ManualResetEvent можна також використовувати з методами WaitAll і WaitAny, поміченими модифікатором static.
Основні методи:
WaitOne - Блокує поточний потік до отримання сигналу об'єктом WaitHandle.
Set - Задає сигнальний стан події, дозволяючи одному або декільком очікуючим потокам продовжити.
Reset - Задає несигнальний стан події, викликаючи блокування потоків.
12. Об’єкти синхронізації потоків .Net AutoResetEvent та Mutex.
AutoResetEvent позволяет потокам взаимодействовать друг с другом путем передачи сигналов. Как правило, этот класс используется, когда потокам требуется исключительный доступ к ресурсу.
Поток ожидает сигнала, вызывая метод WaitOne при возникновении AutoResetEvent. Если AutoResetEvent находится в несигнальном состоянии, поток будет заблокирован, ожидая сигнала потока, в настоящий момент контролирующего ресурс, о том, что ресурс доступен (для этого вызывается метод Set).
Вызов Set сигнализирует событию AutoResetEvent о необходимости освобождения ожидающего потока. Событие AutoResetEvent остается в сигнальном состоянии до освобождения одного ожидающего потока, а затем возвращается в несигнальное состояние. Если нет ожидающих потоков, состояние остается сигнальным бесконечно.
Если поток вызывает метод WaitOne, а AutoResetEvent находится в сигнальном состоянии, поток не блокируется. AutoResetEvent немедленно освобождает поток и возвращается в несигнальное состояние.
Можно контролировать начальное состояние AutoResetEvent, передав конструктору логическое значение; если начальное состояние сигнальное, значение true, в противном случае значение false.
Событие AutoResetEvent можно также использовать с методами WaitAll и WaitAny, помеченными модификатором static.
Mutex
Мьютекс обеспечивает те же самые функциональные возможности, что и оператор lock в C#, что делает его не очень востребованным. Единственное преимущество состоит в том, что Mutex доступен из разных процессов, обеспечивая блокировку на уровне компьютера, в отличии от оператора lock, который действует только на уровне приложения.
Метод WaitOne для Mutex получает исключительную блокировку, блокируя поток, если это необходимо. Исключительная блокировка может быть снята вызовом метода ReleaseMutex. Точно также как оператор lock в C#, Mutex может быть освобожден только из того же потока, что его захватил.
Типовое использование мьютекса для взаимодействия процессов – обеспечение возможности запуска только одного экземпляра программы единовременно.