Можно ли смешивать мьютексы на основе futex с мьютексами glibc-2.2 linuxthreads? - PullRequest
2 голосов
/ 10 февраля 2010

Если вы не знаете, что такое futex и linuxthreads-0.9, пожалуйста, не отвечайте.

Могу ли я смешать в одной программе мьютекс на основе futex с мьютексом из linuxthreads-0.8 или -0.9 (который использовался во всех glibc <= 2.2 и во всех uClibc)? </p>

Мне нужен межпроцессный мьютекс (pshared, PTHREAD_PROCESS_SHARED).

Итак, если потоки запускаются и управляются linuxthreads pthread_manager, будут ли они путаться из-за сна и пробуждения на основе futex?

Могу ли я использовать мьютексы на основе futex для синхронизации между процессами и между потоками?

1 Ответ

2 голосов
/ 10 февраля 2010

Не понимаю, почему ты не смог.

Вы не сможете использовать pthreads, очевидно. Вероятно, вы будете использовать библиотеку pthread со старыми мьютексами, и вам понадобится код futex в какой-то другой библиотеке.

Вы, очевидно, не можете заблокировать мьютекс linuxthreads и разблокировать его с помощью функции futex, которая никогда не будет работать.

Но если в ядре, ожидающем futex, заблокирован один поток, я не понимаю, чем он отличается от блокировки операции ввода-вывода диска, и linuxthreads справляется с этим достаточно хорошо.

...