/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/ruby/ruby-511-17-003/main.rb
33 строки
2 KB
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
Разбор: - Фрагмент показывает конкретный сценарий, который стартует со строки `Разбор:` и задаёт контекст выполнения. - Ключевые элементы блока: `Thread.new`, `join`, `Mutex`, `Queue`, `ConditionVariable`, они определяют основную логику примера. - По шагам код выполняется так: `Разбор:` -> `- Фрагмент показывает конкретный сценарий, который стартует со строк` -> `- Ключевые элементы блока: `Thread.new`, `join`, `Queue`, они опреде` -> `- По шагам код выполняется так: `job_queue = Queue.new` -> `# Потреб`. - Для корректности важно поведение конкурентности: где блокировка, где ожидание, и как исключаются гонки между задачами. - Типичная ошибка при развитии такого кода — смешивать бизнес-правила и инфраструктурные детали в одном месте; лучше разделять ответственность. mutex = Mutex.new cv = ConditionVariable.new items = [] producer = Thread.new do 5.times do |i| mutex.synchronize do items << "элемент-#{i}" cv.signal # будит один ожидающий поток end sleep 0.05 end end consumer = Thread.new do 5.times do mutex.synchronize do # Ждём, пока items не станет непустым cv.wait(mutex) while items.empty? puts "Получил: #{items.shift}" end end end producer.join consumer.join