На этом слайде мы создадим коллизию и узнаем, как от неё избавиться.
Дата отправки отчёта:
25 ноября 2018 г.
Задание выполнено: за
7 час. 47 мин.
Чему научился:
Интересный материал урока, увидел коллизию и способ борьбы с ней. Мне потребовалось изучить дополнительный материал. Возникла масса проблем начиная с того, что нужно было корректно перехватывать завершение работы дочерних потоков и заканчивая созданием синхронизирующего механизма для защиты доступа к переменной count. На видео для языка Java для этого использовалось ключевое слово synchronized, я реализовал схожее поведение через создание фьютекса, ух, было весело:) Попутно узнал про функцию nanosecond, которая позволяет устанавливать задержку в наносекундах.
Оценка видео-уроку:
Оцени работу
Сохранить страницу:
Отчёт оценивали: 17947. Dmitry Sinitsin+119525. Александр Балбашов+19913. vip+13922. Александр+13747. Сергей+119384. Владимир+1791. Валерий Жданов+117606. Виктор+11. Евгений Волосатов+1
Начинаем практику по языку C#
Чтобы стать хорошим программистом — нужно писать программы.
На нашем сайте очень много практических упражнений.
После заполнения формы ты будешь подписан на рассылку
«C# Вебинары и Видеоуроки»,
у тебя появится доступ к видеоурокам и консольным задачам.
Несколько раз в неделю тебе будут приходить письма —
приглашения на вебинары, информация об акциях и скидках,
полезная информация по C#.
Научился: Синхронизировать потоки Трудности: Описание урока
1. Обновить класс Worker: добавить счётчик count и заменить вечный цикл конечным, где вывести на экран номер итерации и значение счётчика..
2. Обновить основной класс Main: создать экземпляр класса Worker и с его помощью 5 безымянных экземпляров класса Thread.
3. Запустить программу и проанализировать результаты.
4. Дополнить класс Worker, добавив паузу sleep(10).
5. Запустить программу и сравнить новые результаты с предыдущими.
6. Устранить возникшую коллизию добавлением в класс Worker метода synchronized void next().
7. Запустить программу и убедиться в отсутствии коллизии.
8. Поэкспериментировать с различными вариантами функции next().
9. Объяснить в каких случаях и почему происходит замедление работы программы.
10. Сделать скриншот и выслать отчет на проверку.
Научился: Поэкспериментировали с потоками и коллизиями. Synchronized метод подразумевает, что он может выполняться только одним процессом в данный момент.
Св-во переменной volatile означает, что доступ или изменение данной переменной происходит тут же, без ожидания завершения операций над переменной другими потоками.
Время работы программы увеличилось из-за того, что в Synchronized метод next кроме основных операций была добавлена пауза Thread.sleep(10).