LINUX.ORG.RU

Ответ на: комментарий от Jetty

Да я чо-то гуглил, гуглил и засомневался. Я ж в основном в коде ядра работаю. А тут потребовалось вылезти.

hibou ★★★★★ ()
Ответ на: комментарий от hibou

ох ...
спинлоки это наипростейщие сущности для многопроцессорной работы
если сомневайшся - сделай для себя свой спинлок
его пример в википедии
и пример для реализации на встроенном ассемблере - тож легко ищеться
:)

ae1234 ★★ ()

Никто не знает, спинлоки есть в пользовательском пространстве? или нет?

Если не секрет, чем тебя mutexes не устраивают?

ttnl ★★★★★ ()
Ответ на: комментарий от ttnl

спинлоки - единственно возможная нормальная чтука для очень кратковременных «запираний» и доступа к таким областям мутексы на пару порядков более тормазные

ae1234 ★★ ()
Ответ на: комментарий от ttnl

А если не уйдет - то не плакала... будем меряться ?

Jetty ★★★★★ ()
Ответ на: комментарий от ttnl

есть совмещенные решения - спинлок + мутекс
спинлок пытаеться несколько циклов захавать ресурс - если не получаеться включает мутекс

ae1234 ★★ ()
Ответ на: комментарий от ae1234

спинлоки - единственно возможная нормальная чтука для очень кратковременных «запираний»

Для однопроцессорных/одноядерных систем спинлоки _вообще_ не имеют смысла. Для них годятся только ядерные мьютексы.

Спинлоки хороши, когда делается захват мьютекса, котороый с большей долей вероятности свободен. Поэтому, собственно, их часто и используют как основу для мьютексов (например, pthread_mutex_t в glibc на многопроцессорных/многоядерных системах сперва пытается захватить с помощью спинлока, и в случае неудачи обращается в ядро).

dmitry_vk ★★★ ()
Ответ на: комментарий от ttnl

Если захвативший блокировку процесс уйдет с процессора, то плакала вся кратковременность.

sched_yield спасает. Тестировал в несколько потоков, которые много раз апдейтят защищённую переменную. Тривиальный спинлок тормозит из-за конфликтов, совпадающих с переключением процессов. С мутексом быстрее. А спинлок, который лочится с помощью trylock+sched_yield, ещё быстрее. Разница вполне ощутимая.

const86 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.