LINUX.ORG.RU

spin locks


0

0

Здравствуйте. Можете рассказать, что это? Т.е. pthread_spin_*(). Для чего они используются? Что значит The calling thread shall acquire the lock if it is not held by another thread. Otherwise, the thread shall spin ? Т.е. spin ? :)

anonymous

>Otherwise, the thread shall spin ?
В противном случае поток будет "крутиться" (т.е. в цикле вызывать неблокируемый системный вызов для захвата ресурса).

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

> в цикле вызывать неблокируемый системный вызов

я хочу придраться исключительно из-за своего занудства.

я уверен, что все "чистые" реализации spin lock не будут
делать никаких системных вызовов, а будут все делать
в userspace.

иначе у нас была бы возможность более эффективно использовать
cpu. те, если реализация примитива использует syscall,
то этот syscall наверняка блокирующий.

idle ★★★★★
()
Ответ на: комментарий от Die-Hard

Признаться я так и не понял отличие spin lock от того же mutex. Я что-то глобально недопонимаю? И в том и в другом случае процесс блокируется, до появления возможности заблокировать ресурс. Так в чем разница?.. То, что при spin lock процессор больше тратиться?

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

при spin lock процесс не блокируется, а трудится по крайней мере на jmp и проверку состояния/захват ресурса, он находится в очереди готовых процессов, учитывается планировщиком и тратит процессорное время.

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