ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 июля
632724 Топик полностью
fk0, легенда (21.11.2015 00:30, просмотров: 268) ответил Олдфаг на Я бы сначала заморочился вопросом а можно в принципе ли обойтись без критических секций даже в 32-разрядниках. Есть же и у кортекса инструкции пересылки цепочек регистров, могущиие прерываться посреди дороги. Не делает ли это саму идею обойтись
Ты странные вещи говоришь. У 32-разрядников современных есть специнструкции для реализации lockless алгоритмов (без мьютексов и крит. секций). И там сложные структуры данных (связанные списки, кольцевой буфер) через это делать можно. Базой многих алгоритмов является примитив Compare And Swap . Но не инструкция процессора: есть ещё более могучие инструкции Load Link / Store Conditional . Старые процессоры могут иметь Test And Set с которым что-то сложней спинлока сделать сложно. Впринципе обычный инкремент ячейки памяти, если он атомарный, может быть вариантом сделать test and set. Даже Z80 имел такие инструкции (инструкции битовых сдвигов применительно к (HL)). К сожалению библиотека C такие вещи не охватывает. Есть в C++ какие-то подвижки. У GCC есть builtin функции для того (см. здесь ).
[ZX]