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