Язык программирования RUBY Есть код, в котором необходимо добавить функцию, которая будет отвечать за раздевалку, в которую могут заходить b выходить только мужчины в количестве 2 человека, женщин пускать нельзя. require './semaphore_lib' class BathInOutControl def initialize @male = Semaphore.new(1) @female = Semaphore.new(1) @bath = Semaphore.new(1) @bathState = :neutral @people = 0 @maxpeople = 3 end # Функция входа мужчины в ванную комнату def GetInBathroomMale @male.up! @bath.up! if @bathState != :male && @people <= @maxpeople @bathState = :male @people += 1 @male.down! end # Функция выхода мужчины из ванной комнаты def GetOutBathroomMale @male.up! @people -= 1 @bathState = :neutral if @people == 0 @bath.down! if @people == 0 @male.down! end # Функция входа женщины в ванную комнату def GetInBathroomFemale @female.up! @bath.up! if @bathState != :female && @people <= @maxpeople @bathState = :female @people += 1 @female.down! end # Функция выхода женщины из ванной комнаты def GetOutBathroomFemale @female.up! @people -= 1 @bathState = :neutral if @people == 0 @bath.down! if @people == 0 @female.down! end end bathroom = BathInOutControl.new N = 4 N.times do Thread.new do sleep rand * 5 puts Thread.current.to_s + ' мужчина пытается войти в ванную комнату' bathroom.GetInBathroomMale puts Thread.current.to_s + ' мужчина вошёл в ванную комнату' sleep rand puts Thread.current.to_s + ' мужчина вышел из ванной комнаты' bathroom.GetOutBathroomMale end end N.times do Thread.new do sleep rand * 5 puts Thread.current.to_s + ' женщина пытается войти в ванную комнату' bathroom.GetInBathroomFemale puts Thread.current.to_s + ' женщина вошла в ванную комнату' sleep rand puts Thread.current.to_s + ' женщина вышла из ванной комнаты' bathroom.GetOutBathroomFemale end end Thread.list.each { |t| t.join unless t == Thread.main }

pula04 pula04    2   11.09.2020 21:47    1

Другие вопросы по теме Информатика