Вопросы с тегом 'spinlock'

Спин-блокировка - это блокировка, которая заставляет поток, пытающийся получить его, просто ждать в цикле ("прокрутить"), неоднократно проверяя, доступна ли блокировка.
6

Когда следует использовать спин-блокировку вместо мьютекса?

Я думаю, что оба выполняют одну и ту же работу, как вы решаете, какой из них использовать для синхронизации?
03 мая '11 в 13:01
11

Что такое "спин-замки"?

Я всегда задавался вопросом, что это такое: каждый раз, когда я слышу о них, изображения футуристических маховиков вроде танцуют (катятся?) в моем сознании... Каковы они?
24 дек. '09 в 8:34
10

Является ли моя реализация блокировки спина правильной и оптимальной?

Я использую спин-блокировку для защиты очень маленького критического раздела. Конфликт случается очень редко, поэтому блокировка спина более уместна, чем обычный мьютекс. Мой текущий код выглядит следующим образом и предполагает x86 и GCC: volatile...
05 сент. '09 в 13:45
10

Spinlocks, насколько они полезны?

Как часто вы на самом деле используете спин-блоки в своем коде? Насколько распространено это сталкиваться с ситуацией, когда использование цикла занятости фактически превосходит использование блокировок? Лично, когда я пишу какой-то код, который тре...
21 сент. '09 в 18:59
4

Как инструкция x86 pause работает в spinlock * и *, может ли она использоваться в других сценариях?

инструкция pause обычно используется в цикле тестирования spinlock, когда какой-то другой поток владеет спин-блокировкой, чтобы смягчить сжатый цикл. Он сказал, что это эквивалентно некоторым инструкциям NOP. Может ли кто-нибудь сказать мне, как имен...
18 янв. '11 в 15:09
4

Метод onSpinWait() класса Thread

В то время как обучение Java 9 я наткнулся на новый метод Thread класса, называемого onSpinWait​. Согласно Javadocs, этот метод используется для этого: Указывает, что вызывающий в данный момент не может прогрессировать, пока не произойдет одно ил...
19 июн. '17 в 4:43
5

Самая быстрая встроенная спин-блокировка

Я пишу многопоточное приложение на С++, где производительность критическая. Мне нужно использовать много блокировки при копировании небольших структур между потоками, для этого я выбрал использование штифтов. Я провел некоторое исследование и тестир...
14 авг. '12 в 19:26
3

Является ли барьер памяти или атомная операция в цикле "занятый-ждать"?

Рассмотрим следующую реализацию spin_lock(), первоначально из этого answer: void spin_lock(volatile bool* lock) { for (;;) { // inserts an acquire memory barrier and a compiler barrier if (!__atomic_test_and_set(lock, __ATOMI...
20 сент. '15 в 9:10
4

spin_lock_irqsave vs spin_lock_irq

На машине SMP мы должны использовать spin_lock_irqsave, а не spin_lock_irq из контекста прерывания. Почему мы хотим сохранить флаги (которые содержат IF)? Есть ли другая процедура прерывания, которая может прервать нас?
01 апр. '10 в 10:11
2

Разница между Мьютекс, Семафор и Спин Блокировка

Я делаю эксперименты с IPC, особенно с Mutex, Semaphore и Spin Lock. Я узнал, что Mutex используется для асинхронного блокирования (со сном (в соответствии с теориями, которые я читаю в NET)) Механизм, семафор - это механизм синхронного блокирования ...
07 мая '14 в 7:08
1

Высокое использование центрального процессора при борьбе с futex

Я заметил, что когда futexes linux утверждаются, система тратит A LOT времени в спин-блоки. Я заметил, что это проблема, даже когда futexes не используются напрямую, но также при вызове malloc/free, rand, glib-мьютекс-вызовы и других вызовов системны...
08 нояб. '12 в 16:37
2

x86 с использованием cmpxchg

Я новичок в использовании сборки gcc inline и задаюсь вопросом, можно ли реализовать на x86 многоядерной машине спин-блокировку (без условий гонки) как (используя синтаксис AT & T): spin_lock: mov 0 eax lock cmpxchg 1 [lock_addr] jnz spin_lock ...
04 авг. '11 в 2:15
1

SpinLock бросает синхронизациюLockException

Я пытаюсь использовать SpinLock, но даже этот самый базовый код в однопоточном приложении Console вызывает следующее исключение, когда я вызываюSpinLock.Exit() System.Threading.SynchronizationLockException was unhandled by user code Message=The ca...
27 июн. '12 в 10:27
3

Intel Inspector сообщает о гонке данных в моей реализации спин-блокировки

Я сделал очень простую спин-блокировку с использованием функций блокировки в Windows и протестировал ее на двухъядерном процессоре (два потока, которые увеличивают переменную); Программа работает нормально (она дает тот же результат каждый раз, что ...
24 сент. '09 в 9:56
3

Существуют ли какие-либо примеры в инфраструктуре .Net, использующие спин-блокировку или спинвайт?

Я просмотрел параллельные коллекции, но они, похоже, используют обычную блокировку под капотом. Есть ли хорошие примеры в среде .NET, которые используют эту конструкцию блокировки? Сначала я посмотрел на ConcurrentDictionary. Я видел, что он использ...
28 июн. '11 в 11:31