Можно ли смешивать мьютексы на основе 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 справляется с этим достаточно хорошо.

Другие вопросы по тегам