需要了解pthread_mutex_lock()和pthread_cond_wait()和pthread_cond_signal()的一种用法

时间:2018-10-01 12:59:30

标签: c linux-kernel embedded posix embedded-linux

我需要了解pthread_mutex_lock()pthread_cond_wait()pthread_cond_signal()的一种用法。

我看过一段代码,其中从CallANumber()调用了一个函数,例如main(),并且在CallANumber()函数内部pthread_mutex_lock()与{ {1}},然后由pthread_cond_wait()释放,此函数pthread_mutex_unlock()WaitForResponse()一起调用了另一个函数,例如pthread_mutex_lock() pthread_cond_signal()

但是我在源库中没有找到任何pthread_mutex_unlock()调用。

是否可以调用pthread_create()Pthread_mutex_lock/unlock() API,而不会调用pthread_cond_wait/signal()函数?

1 个答案:

答案 0 :(得分:3)

在非多线程程序中使用这些功能有两个原因:

  • 这些函数是从通用代码(也许在一个库中)调用的,并且该库需要执行同步,以防进程是多线程的(库作者不知道)。没有同步,该库可能无法在多线程程序中按预期方式工作。

  • 使用process-shared mutexesprocess-shared condition variables,跨进程而不是线程进行同步。