Могу ли я смешивать мьютексы на основе фьютексов с мьютексами glibc-2.2 linuxthreads?
Вопрос
Если вы не знаете, что такое futex и linuxthreads-0.9, не отвечайте.
Могу ли я смешать в одной программе мьютекс на основе фьютекса с мьютексом из linuxthreads-0.8 или -0.9 (который использовался во всех glibc <=2.2 и во всех uClibc)?
Мне нужен межпроцессный мьютекс (pshared, PTHREAD_PROCESS_SHARED).
Итак, если потоки запускаются и управляются linuxthreads pthread_manager, не будут ли они сбиты с толку режимом сна и пробуждения на основе фьютекса?
Могу ли я использовать мьютексы на основе фьютексов как для синхронизации между процессами, так и для синхронизации между потоками?
Решение
Я не понимаю, почему ты не мог.
Очевидно, вы не сможете использовать pthreads.Вероятно, вы будете использовать библиотеку pthread со старыми мьютексами, и вам понадобится код фьютекса в какой-то другой библиотеке.
Очевидно, вы не можете заблокировать мьютекс linuxthreads и разблокировать его с помощью функции фьютекса, это никогда не сработает.
Но если один поток блокируется в ядре, ожидая фьютекса, я не вижу, чем это отличается от блокировки при операции дискового ввода-вывода, и linuxthreads справляется с этим достаточно хорошо.