Возможно, стоит пояснить разницу между синхронизацией из thread/process-safe и синхронизацией с помощью Lock🤔
Наша задача — заставить разные процессы и потоки обращаться к базе данных (или любым другим ресурсам) последовательно. Чтобы не случилось так называемого race condition, то есть состояние гонки. Это когда разные потоки или процессы пытаются одновременно что-то сделать с одним и тем же ресурсом.
В этом случае нам нужна какая-то логика ограничения. Пока один процесс не завершил своё действие, другие не могут получить доступ к ресурсу.
Так вот, thread-safe и process-safe означает что отдельно взятые операции записи в БД гарантированно будут последовательны. Запросы из разных процессов или потоков выстроятся в очередь и не будут мешать друг другу. Лучше всего когда этот блок реализован на уровне БД в виде атомарных операций или ещё как-то.
Но зачем нам тогда еще дополнительный Lock?
Этот способ синхронизации используется когда процесс никак не укладывается в одно действие и должен сделать множество операций прежде чем дать доступ следующему. В этом случае процесс ставит некий глобальный Lock на ресурс и никто другой, даже получив законное право на доступ, не может ничего сделать. Все ждут пока этот Lock не будет снят.
Это решается на уровне приложения и правильность реализации полностью в вашей ответственности. Например, если забыли разблокировать или сделали перекрёстный Lock (Deadlock как на картинке), то всё зависнет в бесконечном ожидании.
#basic
«Рыцарский альбом» (из серии «Средневековые войны»), 80х80см, холст, масло, Doping Pong, 2023
Это вторая работа из серии, посвящённой эстетике и философии средневекового милитаризма, получившего новые смыслы и роль на международной арене во втором десятилетии XXI века.
Зачастую политологи и социологи именуют наше время «Новым Средневековьем». Картина «Рыцарский альбом» отображает главенствующий ныне девиз, знакомый геймерам по игровому режиму «Все против всех, или Каждый сам за себя».
На архаичные воинские доспехи нанесены современные сочные камуфляжные паттерны, которые отсылают к разным природно-климатическим зонам, временам года и сторонам света: здесь есть и заснеженные горные ледники, и ослепительно солнечная пустыня, и непроходимая лесная чаща, и выжженная огнём извержений земля.
Картина композиционно и стилистически решена как обложка винилового альбома вымышленной хевиметалл рок-группы, участники которой не показывают публике своих лиц.
Сюжет картины может иметь множество толкований и визуализирован на стыке средневекового футуризма и неопоп-арта.
More info: Лот 21 - https://vladey.net/ru/lot/12312
#dopingpong#contemporaryart#modernpainting#middleages#knights#medievalwars
Adultery in the later Middle Ages was punished by religious penance, fines, corporal punishment, and public humiliation. In southern France, a punishment called “the run” forced an adulterous couple to move through the streets. They were often naked or in undergarments. In some cases, the woman held a rope attached to her lover’s genitals. A town crier announced the sentence to gather a crowd. The couple could be beaten at crossroads during the procession. Over time, towns increasingly allowed fines instead of public humiliation, especially for those who could pay, while poorer people were more often sentenced to “the run.”
⚖️🏃♂️📜
[Read more]
@googlefactss
#MiddleAges#HistoryFacts#MedievalLaw#Adultery#france#punishment