• Задача
  • Решение
  • Обсуждение

Seats: бронирование одной секцией

Бронирование — проверить места, уменьшить счётчик, добавить в bookings: один инвариант. Реализуйте Seats.Book: весь инвариант в одной секции.

GolangРешение
func (s *Seats) Book(id int) bool {
	s.mu.Lock()
	defer s.mu.Unlock()
	if s.seatsLeft <= 0 {
		return false
	}
	s.seatsLeft--
	if s.bookings == nil {
		s.bookings = make(map[int]bool)
	}
	s.bookings[id] = true
	return true
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

00:00:00
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки