Могу ли я смешивать мьютексы на основе фьютексов с мьютексами glibc-2.2 linuxthreads?

StackOverflow https://stackoverflow.com/questions/2239191

  •  19-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top