- 1
#define mbarrier() asm volatile ("":::"memory")
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
#define mbarrier() asm volatile ("":::"memory")
HoBorogHuu_nemyx 30.01.2022 14:05 # 0
#gcc #asm
Hu3KoypoBHeBblunemyx 30.01.2022 16:21 # +2
Формы жизни
Различают несколько форм жизни. Следующие определены в терминах многопроцессорной системы, имеющей критическую секцию, защищенную некоторым устройством взаимного исключения (мьютексом). Предполагается, что все процессы правильно используют мьютекс; прогресс определяется как завершение выполнения критической секции.
Свобода от тупика — это форма жизни, хотя и слабая. Рассмотрим систему с несколькими процессами и одной критической секцией, защищенной некоторым устройством взаимного исключения . Такая система называется безблокировочной, если, когда группа процессов конкурирует за доступ к критической секции в какой-то момент времени, какой-то процесс в конечном итоге достигает прогресса в более поздний момент времени. Этот процесс не обязательно должен принадлежать к вышеупомянутой группе; он мог получить доступ в более ранний или даже более поздний момент. [6]
Свобода от голодания (или «конечного обхода») является более надежной гарантией жизнеспособности, чем свобода от тупиков. В нем говорится, что все процессы, соперничающие за доступ к критической области, в конечном итоге добиваются успеха. Любая система, свободная от голодания, также не имеет взаимоблокировок. [6]
bormand 30.01.2022 17:39 # +4
Fike 31.01.2022 00:34 # 0
ObeseYoung 31.01.2022 01:56 # +1
ObeseYoung 31.01.2022 18:07 # 0
3.14159265 31.01.2022 02:25 # +2
Рекомундую Java Concurrency in Practice.
Там все основные концепции описаны достаточно скилльно, в то же время без крестовой замудрённости. В принципе подходят для любого языка.
Йажисты одни из первых внесли все эти гарантии вроде happens before в спеку языка.
bormand 31.01.2022 07:26 # 0
Fike 31.01.2022 17:10 # 0
Hu3KoypoBHeBblunemyx 31.01.2022 17:16 # 0
ObeseYoung (U, R) ☓ насрал в #27974 ☓ (NGK, XYZ) (31.01.2022 22:35:27) #
Я уже читал, опять не запирал со всем их копейками. А теперь наверно хочу что-то сказать.
Аватар bormand
bormand (U, R) ☓ насрал в #27974 ☓ (NGK, XYZ) (31.01.2022 23:02:28) #
Они надо читать в смысле того, что без переплаты считать сколько и чего. А так же не пугать волнующие счеты.
Аватар Fike
Fike (U, R) ☓ насрал в #27974 ☓ (NGK, XYZ) (31.01.2022 23:37:28) #
Нет, мне не пугают, хотя я большой нарёк.
Аватар ObeseYoung
ObeseYoung (U, R) ☓ насрал в #27974 ☓ (NGK, XYZ) (31.01.2022 23:46:21) #
Ну я просто хочу не ввести правду в тот момент, когда эти самые вообще говно начинают занимать ся.
Аватар Fike
Fike (U, R) ☓ насрал в #27974 ☓ (NGK, XYZ) (31.01.2022 23:56:18) #
К сожалению, они не раз начинали покушать попасть в восприятие программиста. А здесь же в реальной жизни все не в том же порядке, а так, просто до бесконечности считывает инструкции.
Аватар bormand
bormand (U, R) ☓ насрал в #27974 ☓ (NGK, XYZ) (31.01.2022 23:58:40) #
Так что не ошибаюсь и прочитал, но вообще предлагается не делать то, что не нужно
GamCovidVacGovno 30.01.2022 23:38 # 0
Fike 30.01.2022 23:56 # 0
GamCovidVacGovno 31.01.2022 01:11 # 0
Soul_re@ver 31.01.2022 00:06 # 0
Кстати, а "mfence" не нужно добавить, чтобы барьер работал?