Возможно, стоит пояснить разницу между синхронизацией из thread/process-safe и синхронизацией с помощью Lock🤔
Наша задача — заставить разные процессы и потоки обращаться к базе данных (или любым другим ресурсам) последовательно. Чтобы не случилось так называемого race condition, то есть состояние гонки. Это когда разные потоки или процессы пытаются одновременно что-то сделать с одним и тем же ресурсом.
В этом случае нам нужна какая-то логика ограничения. Пока один процесс не завершил своё действие, другие не могут получить доступ к ресурсу.
Так вот, thread-safe и process-safe означает что отдельно взятые операции записи в БД гарантированно будут последовательны. Запросы из разных процессов или потоков выстроятся в очередь и не будут мешать друг другу. Лучше всего когда этот блок реализован на уровне БД в виде атомарных операций или ещё как-то.
Но зачем нам тогда еще дополнительный Lock?
Этот способ синхронизации используется когда процесс никак не укладывается в одно действие и должен сделать множество операций прежде чем дать доступ следующему. В этом случае процесс ставит некий глобальный Lock на ресурс и никто другой, даже получив законное право на доступ, не может ничего сделать. Все ждут пока этот Lock не будет снят.
Это решается на уровне приложения и правильность реализации полностью в вашей ответственности. Например, если забыли разблокировать или сделали перекрёстный Lock (Deadlock как на картинке), то всё зависнет в бесконечном ожидании.
#basic
Наконец-то заказал себе нормальный моник Samsung на 24" в пару к одному из этих старичков, больше никаких пыток для глаз..
HDD BarraCuda 1TB в #пк и контейнер для 2.5", чтоб после прокачки одного из местных ноутов обзавестись халявным внешним HDD на пару соток гиг 🧐
и замену своим умирающим мейзу POP - недавно вышедшие Realme Buds Air, позже отпишу как они..
#device
Решил поделиться своей историей болезни (телефонов).
Встречайте! История телефонов
(#истории#device)
Всё началось где-то в классе так 3-4, тогда папа отдал мне свой телефон купив себе новую моторолу.
Я достаточно поздно получил свой первый телефон в отличии от сверстников, но позже.. Я начал стремительно обгонять, меняя их как перчатки
Вот краткий гид по прошлому моих средств связи:
–> Siemens M55 без камеры (утопленник сельского туалета в лагере)
–> Nokia 1110 оранжевый от мамы с чб экраном
–> МТС 236 за 199грн... производства ZTE (лето 2011)
–> Nokia C1-01 с камерой, бт, ЖА(Б)ВА ИГРАМИ и печеньками
–> LG GS290 на жаве, но с емкостным экраном и неубиваемым метал корпусом, МАШИНА!
Где-то в это время мне купили первый и единственный планшет на Android (за 999 грн), так что моё знакомство с мирком Fruit Ninja и подобного начался именно здесь, а не с следующего телефона.
К слову говоря, я всё ещё не могу вспомнить куда же он делся ._.
–> LG Optimus L3 [E400] (первый андроид тел.)
–> LG Optimus L5 [E612] (был слит брату как и предыдущий по низкой цене)
–> Samsung Galaxy S4 Active (единственный флагман что у меня был, куплен в конце 2013. Украден во время лыжного курорта в Словакии)
–> Sony Xperia M2 (куплен в первой половине 2015 года, утопленник Средиземноморья в Израиле)
–> Microsoft Lumia 430 (уже не помню куда он делся, но в те времена обновился до Win10M даже)
–> Doogee X5 (сука ненавижу)
–> LG Spirit [H422] (купила себе маман, я на второй день обменялся на дужи :) С ним я начал флексить в кастомы и патчи из-за нехватки встроенных 8gb)
–> Motorola Moto G3 [2015] (выпущен на 5, прошит на 8, а сейчас прошивки с 9 андроидом есть, п-поддержка)
–> Xiaomi Redmi 4 Prime [markw] (матрица пошла гулять, при этом стекло тел не пострадало, пострадали матрица и накленное стекло. Меняли раза 3 так как был брак тача, в итоге в срочном порядке перешёл на next ph.)
–> Xiaomi Mi A1 [tissot] (ааа, первое сяоми комьюнити, скорблю)
–> Xiaomi Redmi Note 5 [whyred] (комьюнити топовое, люблю этих ребят, лучшие знакомства в интернете. Уже олд, менял батарею, смаковал разные ром'ы)
–> Poco X3 NFC [surya] <– im here