我需要了解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()
函数?
最佳答案
在非多线程程序中使用这些函数有两个原因:
这些函数是从泛型代码调用的,可能是在库中,如果进程是多线程的(库作者不知道),这个库需要执行同步。如果没有同步,库可能无法在多线程程序中正常工作。
使用process-shared mutexes和process-shared condition variables跨进程而不是线程进行同步。