Вопросы по теме '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 просмотров
schedule
10.08.2022