是否存在使用PTHREAD_MUTEX_INITIALIZER靜態初始化pthread互斥鎖並將它們直接傳遞給鎖定的已知問題?應該避免使用PTHREAD_MUTEX_INITIALIZER進行pthread_mutex靜態初始化嗎?
注:使用PTHREAD_MUTEX_INITIALIZER不會立即初始化互斥鎖互斥鎖初始化
我在一些網站,這不能在所有平臺上得到保證,也是在幫助頁面下面的說明是讀取。相反,在第一次使用時,pthread_mutex_lock()或pthread_mutex_trylock()函數分支到慢速路徑並導致互斥體的初始化。由於互斥不只是一個簡單的內存對象,並要求一些資源被系統分配,試圖調用使用PTHREAD_MUTEX_INITIALER一個靜態初始化,尚未鎖定導致EINVAL錯誤互斥pthread_mutex_destroy()或調用pthread_mutex_unlock() 。
因此,如果兩個線程靜態初始化後的pthread_mutex_lock調用,它會導致什麼問題?