Всем привет! Случайно вспомнил, что мой блог про программирование, математику ващет и в целом создан для просвещения мешков с костями и мясом.
Поэтому хочу рассказать про <a href="https://en.cppreference.com/w/cpp/thread/recursive_mutex">std::recursive_mutex</a>. Он такой же, как и std::mutex, но запоминает номер потока, из которого был заблокирован и вторую блокировку в том же потоке игнорирует. В моём случае был приблизительно такой код:
struct Item {
~Item() {
getStorage().RemoveItem(otherItemId);
getStorage().AddItem(newItem);
}
}
using ItemPtr = std::shared_ptr<Item>;
using ItemRef = const ItemPtr&;
using ItemId = std::size_t;
class Storage {
public:
ItemId AddItem(ItemRef item)
{
std::scoped_lock lock(m_itemsGuard);
m_items.push_back(item);
return m_items.size() - 1;
}
bool HasItem(ItemId id) {
return m_items.size() < id;
}
void RemoveItem(ItemId id)
{
std::scoped_lock lock(m_itemsGuard);
auto item = m_items.at(id);
m_items.erase(m_items.begin() + id);
item.reset(); // Тут повторно заходим в RemoveItem
}
private:
std::vector<ItemPtr> m_items;
std::recursive_mutex m_itemsGuard;
};
void test() {
Storage storage;
auto itemId = storage.AddItem(std::make_shared<Item>());
storage.RemoveItem(itemId); // здесь проблема
}
Обратите внимание, что в деструкторе Item есть обращение к методам Storage, а там на каждое изменение массива стоит блокировка мьютекса. И оно попадет в вечный lock с std::mutex. А на этом у меня всё. Enjoy!
На второй день после возвращения домой меня посетило давно забытое чувство — чувство голода. В отеле было навалом еды: шведский стол на завтрак, обед и ужин, вдобавок бургеры, пицца, хот доги, нагетсы, шаверма и прочий фастфуд без ограничений — удержаться было очень тяжело, всё очень вкусное, много и включено. Набрал пару килограмм за десять дней. Впервые в отеле Турции вино (красное, белое, розовое) было хорошего качества и разлито по графинчикам по пол-литра. Пиво можно и не упоминать. На жаре — чистая амброзия. Как не спились за это время — загадка. WiFi интернет бесплатный и работает относительно неплохо. Британцы крикливые, как чайки, и некоторые особо толстые особи катаются на электрических машинках, как в Южном Парке.
Поездка прошла неожиданно быстро хорошо и без каких либо проблем: самолёт задержали всего на полчаса, в гостинице было чисто, еды было много и она была вкусной. Погода отличная.
Экскурсии выбрали задолго до вылета, поэтому приехали подготовленные с определенной целью: максимум искупаться и попрыгать с лодки в лазурное море. Всего экскурсий было четыре: остров Клеопатры, слияние морей, эгейские острова и река Дальян. Все заказывали у Давида из Hot Travel Agency. Сначала был хамам.
Про хамам рассказывать особо нечего: хамам хороший, массаж на все деньги, располагается в отдельном здании, везут на автобусе, в отличие от того раза в Алании, когда нас повезли два парня, не говорящие на других языках, кроме турецкого.
Остров Клеопатры
План такой: вас привозят на остров, там вы тусуетесь два часа под пальмами, отвозят обратно. Дополнительно есть остановки для купания до острова и после. Пляж Клеопатры огорожен, спуск к воде сделан отдельными лесенками. Песок на пляже прекрасен, вода прозрачная и теплейшая, как в ванне, обед включен. Обед состоит из макарошек, куриного шницеля, какого-то салата и куска хлеба, он стандартный для всех экскурсий в Турции и входит в стоимость, безалкогольные напитки без ограничений: кола, фанта, спрайт, чай, кофе. Вход на остров оплачивается отдельно и стоит 14 баксов. Если не платите, сидите два часа на судне. Глупо? Глупо, согласен.
Минусы: стоимость билета Давид нам озвучивал в 10 баксов, пришлось брать в долг у гида. Неприятно, но не катастрофа. Всегда берите с собой денег с запасом.
Слияние морей
Откровенно говоря, слияния морей (Эгегейского и Средиземноморского) не показывают. Просто поездка в город Турунч на корабле с остановками для купания. Называется так для привлечения туристов. Есть два варианта: с безлимитными напитками и с добавлением безлимитного алкоголя за 10 баксов. Мы взяли с алкоголем и тут нас попытались нагреть: не выдали специальные браслеты, которые положены в таких случаях. После вопроса в WhatsApp Давиду нас неожиданно нашли и соответствующие браслеты выдали. Подозреваю, что попытка нагреть нас была со стороны команды корабля. Одна две остановки для купания, затем час в городе Турунч, потом ещё одна остановка для купания. Кроме адской жары в городе Турунч (высаживают в полдень!) и попыткой нагреть (будьте внимательны!) экскурсия ничем особенным не запомнилась.
Эгейские острова
Самая насыщенная на события поездка на корабле: шесть островов, среди них: остров с козликами, с развалинами греческого храма, остров с кроликами, остров «Зубы дракона» с пещерами и прочее. Нам очень понравилось, никаких нареканий, судно называется Granitsa, у местного гида есть любопытная особенность: заканчивать объявления по громкой связи протяжным «Спасиба-а-а!» с ударением на последний слог, ни с кем её не перепутаете. Обеспечивает хорошее настроение всю дорогу.
Река Дальян
Алгоритм такой: грузимся на маленькое судно из автобуса, идём по реке Дальян до впадения её в море, там купаемся полтора часа, затем обратно.
Впадение реки Дальян в море захватывает дух и вызывает полный восторг. Так что природа — огонь, впечатлений масса: искупались на все деньги, носились по волнам, как малые дети, сплошной восторг, вода — парное молоко. На реке можно лицезреть древние гробницы, высеченные прямо в скале.
Пару раз ездили в порт Мармариса на стоянку яхт и больших кораблей. От отеля до стоянки 45 минут ходьбы.
Подведу итог: путешествие понравилось, Мармарис рекомендую к посещению. Намного лучше Алании и Анталии вместе взятых. Возможно, конкуренцию может составить Кемер, но это неточно.
P.S. Кому интересно, туры ищем через сайт конторы Тур-Касса. Ни разу не реклама, просто они ищут у всех операторов. Для быстрого поиска самое оно. Сначала ищем отели в нужном городе, нужной страны, потом смотрим на сайте туроператора — может выйти немного дешевле.
Некоторые новостные сайты настолько пренебрежительно относятся к своим посетителям, что не стесняясь запускают ролики со звуком во время просмотра. Я абсолютно уверен, что они в курсе, что поступают, как последние упыри, но а я научу вас с этим бороться в браузере Google Chrome.
Windows
Нажимаем Ctrl-L
Вбиваем в строку chrome://settings/
В поисковой строке вбиваем настройки сайтов и переходим в найденный пункт
Мотаем вниз, открываем Дополнительные настройки контента и затем Звук
В разделе Запретить сайтам воспроизводить звук давим кнопку Добавить
Добавляем сайты lenta.ru и moslenta.ru, чтоб их маркетологи были здоровы, мать их
Android
Переходим в Настройки из меню справа на три точки
Затем пункт Настройки сайтов
Заходим в пункт Звук
Давим Добавить исключение
Добавляем сайты lenta.ru и m.lenta.ru
Шлём лучик поноса авторам Ленты
PROFIT
Ну и не мог пройти мимо цитаты из книжки «HTML5 для веб–дизайнеров»:
Слабонервным беременным детям со слабой психикой и желудком без чувства юмора просьба убраться от экрана. Контент строго 18+, возможны дикпики, невыносимая тяжесть бытия и груз прожитых лет. Я вас предупредил!
Как-то так получилось, что я неплохо знаком с хирургией, но есть нюанс (C) — знаком с ней с обратной стороны ножа, как пациент.
Карбоновый апгрейд сердца у меня был шесть лет назад, кусок черепа удалили два года назад, и пришёл я, значит, на титановый апгрейд, чтоб форму черепа обратно восстановить, ибо приносит это сильный моральный дискомфорт.
Операция называется краниопластика. Это когда к черепу на место удаленной ранее кости, прикручивают пластину на малюсенькие винты или крепят на специальные скобы (молотком?). Выглядит жутковато. Материал пластины может быть разным, мне досталась титановая и это здорово, потому что титан холодненький хорошо приживается в нашем организме и практически не вызывает отторжения. А ещё он прочный!
Операция не считается особо сложной, но рискованная, как и любое хирургическое вмешательство. Расскажу, как всё проходило у меня.
Перво-наперво, я созрел морально. Это сложно, это нервно, но я справился, потому что выбора нет. Затем записался к нейрохирургу на приём в Елизаветинской больнице. Для дозревания потребовалось около двух лет.
Волею случая, мне достался нейрохирург Андреев Станислав Иосифович и все дальнейшее общение проходило с ним. Поскольку, пациент я непростой, с подвохом, анализов мне пришлось сдавать немного больше обычного и дополнительно получать разрешения местного анестезиолога и терапевта.
После получения разрешения, мне назначили дату госпитализации и туда я пришёл с уже побритой головой. Заселился в палату, взяли анализ крови, дополнительно пообщался с анестезиологом, запретили ужинать и есть до операции. Разрешили пить воду до полуночи, но без фанатизма. Утром был разбужен фразой медсестры: У тебя операция в девять! Был снова побрит, надели компрессионные чулки первого типа против тромбоза, сняли всё остальное и повезли в операционную номер один.
В операционной очень чисто, все в масках и ощутимо ссыкотно холодно. Вставили катетер в левую руку, поставили две баночки какого-то препарата, на правую руку надели тонометр, приклеили датчики сердечного ритма, на палец надели пульсоксиметр (измеритель уровня кислорода в крови), дали подышать маску и под лекцию анестезиолога своему ординатору про то, что сначала вводят гипнотическое, потом релаксант, потом я уснул. Операция идёт около часа, но для меня прошло меньше секунды. Закрыл глаза, открыл глаза — во рту, как кошки насрали, немного саднит горло после интубации и хочется пить. Перед операцией анестезиолог обещал разбудить, чтобы вытащить трубку и сделать несколько тестов. С его слов этот момент точно был, но я его не помню.
После перевода в палату наказали не спать час, что я с лёгкостью и сделал: просто закрыл глаза, через час открыл, при этом совсем-совсем не спал. Окончательно пришёл в себя только на следующий день. Немного опухла оперированная часть головы и болел шов. Когда голова болит только снаружи для меня ощущение совершенно новое, но не рекомендую вам его испытывать.
Я ещё надеюсь и верю, что когда-нибудь медицина достигнет такого уровня, что изобретение темных Эльдар — катетер Фолея — будут устанавливать и снимать тогда и только тогда, когда пациент находится без сознания. В этот раз мне частично повезло и установили его после введения наркоза, а вот вытаскивали уже в сознании и это была самая неприятная часть операции.
Кто-то возразит: «Вот прицепился к катетеру Фолея, мне делали и всё нормально было», а я отвечу: «вали нахер, извращенец, и больше сюда не приходи, нам не по пути, грязный овцеёб!»
Обстановка в нейрохирургическом отделении номер два местами напоминает помесь игры Outlast и психушку. Специфика такова, что люди с проблемами в голове в виде кровоизлияний и опухолей сначала неадекватны из-за своего недуга, а затем из-за последствий оперативного вмешательства в мозги. А значит увидеть мычащего зомби в окровавленной шапочке из бинтов в своей палате посреди ночи обычное дело. Как правило медперсонал всё время начеку, поэтому зомби быстро ловят и отводят в свою палату. Разумеется, встречаются товарищи, которые пробухали свои мозги и потеряли человеческий облик. И они нам совсем не товарищи! Таким уже всё равно и их обычно переводят прямиком в дурку. В прошлый раз на отделение было три палаты: женская, мужская и мужская для буйных. В дурку уезжают из третьей. На этот раз палаты для буйных не было.
В прошлый визит, у нас был чокнутый дед, который ходил голый в одних подгузниках и босиком с важным видом по палатам и задумчиво говорил: «Тааак!». У него был такой серьезный вид, что мы дали ему кличку Главврач. Сначала он был вроде нормальный, но посреди ночи начал ловить кикимору, которая сидела у него на кровати и хотела его задушить. В итоге через пару недель увезли деда в психушку.
Медперсонал бывает грубоват, но я их понимаю. Надо иметь железную выдержку и стальные нервы, чтобы каждый день общаться с такими пациентами.
Отдельно хотелось бы отметить питание в больнице. Не то, чтобы я был требователен к меню в больнице, которая занимается экстренной помощью, но судите сами: утром пшенная каша с булкой, днём варёная капуста, которую кто-то может по ошибке принять за суп, вечером манная каша. Качество еды приемлемое, сытность достаточная, но ассортимент бедненький. Платная палата стоит 2200 в сутки, при этом кормят там той же едой.
И вы можете меня спросить:, что я делал две с лишним недели в больнице после операции, а я отвечу: ходил с важным видом, чтоб остальные не заподозрили, что я нормальный.
А ещё к нам перевели юного самокатчика, который разбил голову по пьяни, катаясь на электросамокате. По виду, как настоящий человек, с ходу и не отличишь. Только тупой.
Между прочим, результат операции поразительный — череп теперь ровный, лишние рубцы и бугры со шрама убрали. Хочу сказать огромное спасибо Андрееву Станиславу Иосифовичу за проделанную работу!
А на сегодня всё. Ставьте лайк, подписывайтесь на канал, нажимайте колокольчик где-нибудь в другом месте.