glibc использует NPTL в Linux, а реализация мьютекса разделена на несколько каталогов:
nptl
: высокоуровневые мьютексы потоков POSIX в исходных файлах pthread_mutex_*.c
.
sysdeps/nptl
: Документация и заглушки для оболочек futex в lowlevellock*.h
.
sysdeps/unix/sysv/linux
: futex
оболочки системных вызовов в lowlevellock-futex.h
.
- Специфичные для архитектуры подкаталоги, такие как
sysdeps/unix/sysv/linux/x86_64
: встроенные функции ассемблера для низкоуровневых операций блокировки в lowlevellock.h
и lowlevellock.S
.
Большинство типов синхронизации в libstdc++
(реализация стандартной библиотеки C ++ в GCC) сами являются оболочками вокруг libpthread
библиотечного компонента glibc (конечно, только в GNU / Linux).