Size: a a a

2021 February 20

КП

Котеечко Пухнастиньк... in supapro.cxx
бам
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
а что же делать, если в другом кусочке кода работающего с этим же списочком - используется оффсет который берется от селектора
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
тоесть per_cpu
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
и там нельзя включать прерывания, иначе высока вероятность прострелить себе колено
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
О - Озадачился*
источник

s

std::slavik in supapro.cxx
ну как работает операционная система
есть источник прерываний регулярных - тикер
который вызывает по прерыванию планировщик регулярно
планировщик переключает контекст в эти моменты
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
так
источник

s

std::slavik in supapro.cxx
что такое атомарный блок
это по сути значит что ты запрещаешь при входе в него прерывания
и не даешь переключить контекст никуда
пока блок не выполнится и прерывания не разрешены снова будут
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
это то что мне надо?
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
так

но у нас же SMP система

много ядер, много потоков

общая память
источник

s

std::slavik in supapro.cxx
если ты в этом блоке вдруг решил чего-то подождать - все остальные потоки не выполняются
т.к. прерывания запрещены и планировщик не работает
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
ого
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
так это получается stop_machine
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
когда весь мир замер пока 1 поток не выйдет из крит. секции
источник

s

std::slavik in supapro.cxx
нет - просто у тебя процессор выполняет код который написан
и ничего его не прерывает
нет прерываний - операционка не работает по сути
есть всякие системы защиты от этого
и настройки гибкие
собственно вот какая то из этих систем и кинула ошибку
если бы ее не было - все бы просто зависло
и все
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
тю, так хорошо. это на 3м ядре выполнится без прерываний.
а на 4м ядре без прерываний выполнится тоже самое
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
паралельно
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
в итоге два паральльно работающих ядра зайдут паралельно в контекст без прерываний и великолепно там без прерываний запишут две разные строки в 1 и тот же пустой кейс
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
глобальной структуры (списка) не суть
источник

КП

Котеечко Пухнастиньк... in supapro.cxx
памяти
источник