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

Избегание сна при удерживании спин-блокировки
Недавно я прочитал раздел 5.5.2 (Спин-блокировки и атомарные контекст) книги LDDv3: Избежать сна, удерживая замок, может быть сложнее; многие функции ядра могут спать, и это поведение не всегда хорошо документировано . Очевидным примером...
6574 просмотров
schedule 26.05.2022

Как лучше всего синхронизировать доступ к памяти, разделяемый между ядром и пространством пользователя, в Windows
Я не могу найти функцию для получения спин-блокировки в Win32 Apis. В чем причина? Что мне делать, когда мне нужно использовать спин-блокировку? Я знаю, что существует функция CriticalSectionAndSpinCount. Но это не то, что мне нужно....
1444 просмотров
schedule 26.05.2022

Когда стоит использовать спин-блокировку?
Кажется, что спин-блокировки не так хороши, поскольку они тратят впустую циклы ЦП, когда ожидают (блокируют). Если поток просто засыпает, ожидая сигнала для пробуждения, то циклы ЦП не теряются при вращении. Может быть, хорошо использовать...
2313 просмотров
schedule 26.06.2023

Ядро Linux: Spinlock SMP: Почему preempt_disable() в версии spin_lock_irq SMP?
Исходный код в ядре Linux: static inline void __raw_spin_lock_irq(raw_spinlock_t *lock) { local_irq_disable(); preempt_disable(); spin_acquire(&lock->dep_map, 0, 0, _RET_IP_); LOCK_CONTENDED(lock, do_raw_spin_trylock,...
7225 просмотров
schedule 16.03.2023

Неблокирующий сокет принимается без спин-блокировки в C
Возможный дубликат: Поток пробуждения заблокирован на принять() вызов Я пишу небольшой сервер, который прослушивает соединения (принимает их и передает рабочим потокам) до тех пор, пока не будет отправлен пользовательский сигнал...
2054 просмотров
schedule 09.04.2023

spinlock_t уже заблокирован при первом использовании
Привет, я впервые программирую ядро ​​​​(2.6), и у меня проблема с использованием спин-блокировок. Я пытаюсь добавить этот системный вызов (inserisci_nodo), который экстернализует структуру (список-хеш-таблица ibrid) и пытаюсь добавить узел...
1659 просмотров
schedule 24.11.2022

Реализация SpinLock в шейдере HLSL DirectCompute
Я пытаюсь реализовать спин-блокировку в вычислительном шейдере. Но моя реализация, похоже, ничего не блокирует. Вот как я реализую блокировку вращения: void LockAcquire() { uint Value = 1; [allow_uav_condition] while (Value) {...
735 просмотров
schedule 04.02.2024

Зачем нам нужно pushcli() перед xchg()?
Я просматривал эту реализацию спин-блокировок и в частности, функции получения и освобождения: void acquire(struct spinlock *lk) { pushcli(); // disable interrupts to avoid deadlock. if(holding(lk)) panic("acquire"); // The xchg is...
313 просмотров