Многопоточный санузел

Когда я забеременела вторым ребенком в 2022-ом, продемонстрировала, счастливая, мужу тест с двумя яркими красными полосками, муж сказал:

- Мне нужен психолог!

А дочь из комнаты крикнула:

- Ноги его в моей комнате не будет!

- Ну что ж, у меня самое чуткое и понимающее семейство в мире! - восторженно сказала я и стала обнимать собаку. - Скуленька, а ты-то рада?!

Но на одном понимании Скули не выедешь - необходимо было расширяться. И стала я проектировать пристройку к дому со стороны входа.

Пристройка состоит из открытой веранды на первом этаже (потому что там уже вход в дом и окно из кухни, и застраивать все это крытыми помещениями было не вариантом), и на ней два помещения: детская для нового члена семьи и санузел.

Идея построить санузел на втором этаже у нас у всех вообще была уже давно. Потому что было две спальни на втором, и ночью спускаться вниз каждый раз по нужде (да и в душ тоже) было крайне неудобно. Только куда его пихать?

Были у меня мысли встроить унитаз на лестничном проеме аккуратно, чтоб не мешал проходу, и чтоб открытию-закрытию дверей тоже не мешал, но это было не реально! Он бы все равно встал так, чтоб через него надо было бы перешагивать, выходя и заходя как из нашей комнаты, так и из комнаты дочери. Сооружали мы временно подвесной рукомойник в спальне, но все это было не то! Я мечтала о большой ванной комнате с зеркалом, ванной, часами, подсветками и прочими радостями. И беременность подтолкнула к мечте решительно!

Только где проектировать вход в санузел? Второй этаж получается весь трамвайного типа! Поднимаешься по лестнице: направо к дочери, налево к нам. Все! Иных проходов нет. Пристройку для санузла и детской я разделила ровно на две части, детская примыкает к нашей спальне, санузел - формально к дочериной, но наша комната шире дочериной, поэтому стена санузла захватывает обе спальни. И получается, что оба входа - и в новую детскую, и в санузел - будут из нашей спальни! А если б даже и были бы наши две спальни по ширине одинаковые, и санузел строго примыкал бы только к дочериной комнате, все равно не удобно было бы нам всем ходить в санузел через дочь! Это издевательство было бы над ней. А так дочери бегать через нас? Ага!... А потом сын подрастет и тоже будет бегать через нас в туалет! (Мало того, что просто проход в его комнату через нас) Никакой личной жизни?!

Вот поэтому я и не стала мелочиться: я спроектировала вход в санузел из КАЖДОЙ спальни! И из нашей, и из дочериной, и из новостроеной комнаты сына!

Когда я все это рисовала и показывала строителям, они удивились:

- Это что вы все вот так здесь по кругу ходить будете, что ли?!

Ага. Зашли в дочерину комнату, прошли в санузел, зашли из него к сыночку, вышли к нам в спальню и пошли обратно к дочери. Все взялись за руки и ходим! Делать нам больше нечего... Как же они не поняли мою гениальную задумку?! Мой СУПЕР-ПРОЕКТ!... Недооцененный.

А дочь с мужем до сих пор ржут надо мной! Потому что это наглядная демонстрация data race: точку доступа открыли трем потокам, а мьютексы на чтение и запись поставить забыли! Тут или пул бюрократии, чтобы сходить поссать: сначала надо постучать и запросить разрешение на транзакцию (не ссыт ли кто в данный момент?), затем отправить всем трем потокам пуш-уведомление (шпингалеты или таблички) о том, что в данный момент идет активная транзакция, потом не забыть отправить обратные пуш-уведомления (три таблички снять или разблокировать шпингалеты), что транзакция завершена, можно заходить другому потоку, или будут дед-локи (например дочь три шпингалета закрыла, а потом открыла только свой, и в туалет, кроме как через ее комнату, больше никому не попасть), или та самая дата-рейс!

Тут доработать-то... Что два пальца об асфальт!

Варианты решения

  • Общий мьютекс. mutex.lock(), mutex.unlock(). Ну просто шпингалетики ставим и троссиками их соединяем! Делов-то? Закрываешь один шпингалет, троссики натягиваются, шестеренки шуршат, и закрываются остальные! А Ганс Форальберг нервно курит в сторонке.

  • Обернуть наш сортир в std::atomic. Ну унитаз и так атомарен по определению, в него не могут физически посрать два человека одновременно. Осталось разобраться с ванной, с раковиной... Как-то сделать их неделимыми вместе с унитазом! Например тройной клапан подачи воды и слива: перекрывает все так, что слив и вода свободны либо только для унитаза, либо только для раковины, либо только для ванны. Тогда нарушить атомарность не будет ни для кого никакого стимула! Все будут об этом помнить... Делов-то?

  • Спинлок в виде закольцованых датчиков под ковриками, которые подают сигнал и зажигают индикаторы красным в каждой комнате! (Желательно бы еще блокировать магнитными полями все двери).

  • std::queque. Вывесить табло электронной очереди перед пристройкой. Автоинформатор на весь этаж: «Талон с номером А4, пройдите к унитазу!»

И так как нам бюрократией заниматься лень, то у нас конечно же дата-рейс! Все двери открыты, ни шпингалетов, ни табличек, ни красно-зеленых световых индикаторов "занято\свободно", ни талонов МФЦ нет. Поэтому периодически у нас (если все дома) раздается или мужнино "Я сру! Сюда идти не надо!", или дочерин визг из ванны, а за ним визг домработницы, которая зашла помыть помещение, не постучав, или мое грозное "Ну кто опять убрал пандус?!"

Странно, и почему же надо мной вся семья ржет? Ведь я гениальный архитектор!

2
Автор поста оценил этот комментарий
Все предложения очень сложны в реализации, вам надо всего лишь обзавестись дворецким
раскрыть ветку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества