Курсы по программированию

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Клиент-серверный сокет / VIP. Синхрофазатрон

  • На этом слайде мы создадим коллизию и узнаем, как от неё избавиться.
  • Дата отправки отчёта: 7 декабря 2018 г.
  • Задание выполнено: за 36 мин.
  • Чему научился: Это же очевидно, функцию next() может запускать только кто-то один, другие ждут, по сути это как магазин с кучей касс, но кассир всего один, вот покупатели и стали в один ряд к единственно рабочей кассе, потому что в эту функцию засунули sleep(), которые и отнимает львиную долю времени.
    просто не нужно в подобные функции пихать что-то длительное, особенно обычные задержки типо sleep(), там должны быть максимально быстрые телодвижения, пока кто-то один занял место, другие могут делать свои задачи, которые по идее должны быть медленнее, чем время выполнения next(), увеличение на единицу быстрее, чем вывод на экран, поэтому всё проходит красиво, пока другие рисуют, один из потоков складывает незаметно для них.
    В конце же вообще засунули целый цикл в метод next(), пока один на качелях не покатался, другие стояли и ждали очереди.
  • Что было сложным: найти время
  • Оценка видео-уроку:
Отчёт от 10558 за Клиент-серверный сокет / VIP. Синхрофазатрон




Оцени работу

 
Сохранить страницу:

1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Иван Воронин  # Клиент-серверный сокет / VIP. Синхрофазатрон / 2018-12-09 17:09

т.е в магазин по 1 человеку запускали


10558. --
Иван Воронин
Иван Воронин
ответить
→  Евгений Волосатов  # Клиент-серверный сокет / VIP. Синхрофазатрон / 2018-12-09 23:40

как вариант, пока он там всё не изучит, не купит что ему надо, короче пока не выйдет, другого не пускали.


  • Отчёт оценивали:
    10558Иван Воронин+1   16568Игорь Тюлькин+1   3922Александр+1   11353AlliZzeN+1   9752chokayes+1   18626superGrover+1   20111Deep Network+1   Посетитель+1   19384Владимир+1   17606Виктор+1   17947Dmitry Sinitsin+1   791Валерий Жданов+1   9913vip+1   1Евгений Волосатов+1   3747Сергей+1   10494Алексей В.+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).