我需要了解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()
函数?
答案 0 :(得分:3)
在非多线程程序中使用这些功能有两个原因:
这些函数是从通用代码(也许在一个库中)调用的,并且该库需要执行同步,以防进程是多线程的(库作者不知道)。没有同步,该库可能无法在多线程程序中按预期方式工作。
使用process-shared mutexes和process-shared condition variables,跨进程而不是线程进行同步。