Необходимо понять одно использование pthread_mutex_lock () и pthread_cond_wait () и pthread_cond_signal () - PullRequest
0 голосов
/ 01 октября 2018

Мне нужно понять одно использование pthread_mutex_lock() и pthread_cond_wait() и pthread_cond_signal().

Я видел фрагмент кода, где функция, например, CallANumber() вызывается из main() и внутри этой CallANumber() функции pthread_mutex_lock() используется вместе с pthread_cond_wait(), а затем освобождается с помощью pthread_mutex_unlock(), и есть другая функция, например, WaitForResponse(), внутри этой функции pthread_mutex_lock() вместе с pthread_cond_signal() был вызван и выпущен pthread_mutex_unlock().

Но я не нашел ни одного pthread_create() вызова внутри исходной базы.

Можно ли вызвать Pthread_mutex_lock/unlock() и pthread_cond_wait/signal()API без функции pthread_create() никогда не вызывались?

1 Ответ

0 голосов
/ 01 октября 2018

Существует две причины использования этих функций в программах, которые не являются многопоточными:

  • Функции вызываются из общего кода, возможно, из библиотеки, и эта библиотека должнавыполнить синхронизацию, если процесс многопоточный (авторы библиотеки не знают).Без синхронизации библиотека может не работать должным образом в многопоточной программе.

  • Синхронизация происходит по процессам, а не по потокам, с использованием разделяемых процессами мьютексов и переменные общего состояния процесса .

...