回覆列表
  • 1 # 遊戲人間7281

    pthread_mutexattr_settype(3C)可用來設定互斥鎖的type屬性。pthread_mutexattr_settype 語法#include <pthread.h>int pthread_mutexattr_settype(pthread_mutexattr_t *attr , int type);型別屬性的預設值為 PTHREAD_MUTEX_DEFAULT。type引數指定互斥鎖的型別。以下列出了有效的互斥鎖型別:PTHREAD_MUTEX_NORMAL 描述: 此型別的互斥鎖不會檢測死鎖。如果執行緒在不首先解除互斥鎖的情況下嘗試重新鎖定該互斥鎖,則會產生死鎖。嘗試解除由其他執行緒鎖定的互斥鎖會產生不確定的行為。如果嘗試解除未鎖定的互斥鎖,則會產生不確定的行為。PTHREAD_MUTEX_ERRORCHECK 描述: 此型別的互斥鎖可提供錯誤檢查。如果執行緒在不首先解除鎖定互斥鎖的情況下嘗試重新鎖定該互斥鎖,則會返回錯誤。如果執行緒嘗試解除鎖定的互斥鎖已經由其他執行緒鎖定,則會返回錯誤。如果執行緒嘗試解除未鎖定的互斥鎖,則會返回錯誤。PTHREAD_MUTEX_RECURSIVE 描述: 如果執行緒在不首先解除鎖定互斥鎖的情況下嘗試重新鎖定該互斥鎖,則可成功鎖定該互斥鎖。 與 PTHREAD_MUTEX_NORMAL 型別的互斥鎖不同,對此型別互斥鎖進行重新鎖定時不會產生死鎖情況。多次鎖定互斥鎖需要進行相同次數的解除鎖定才可以釋放該鎖,然後其他執行緒才能獲取該互斥鎖。如果執行緒嘗試解除鎖定的互斥鎖已經由其他執行緒鎖定,則會返回錯誤。 如果執行緒嘗試解除未鎖定的互斥鎖,則會返回錯誤。PTHREAD_MUTEX_DEFAULT 描述: 如果嘗試以遞迴方式鎖定此型別的互斥鎖,則會產生不確定的行為。對於不是由呼叫執行緒鎖定的此型別互斥鎖,如果嘗試對它解除鎖定,則會產生不確定的行為。對於尚未鎖定的此型別互斥鎖,如果嘗試對它解除鎖定,也會產生不確定的行為。允許在實現中將該互斥鎖對映到其他互斥鎖型別之一。對於 Solaris 執行緒,PTHREAD_PROCESS_DEFAULT 會對映到 PTHREAD_PROCESS_NORMAL。 pthread_mutexattr_settype 返回值如果執行成功,pthread_mutexattr_settype 函式會返回零。否則,將返回用於指明錯誤的錯誤號。EINVAL 描述: 值為 type 無效。EINVAL 描述: attr 指定的值無效。

  • 中秋節和大豐收的關聯?
  • 華為榮耀8青春版有沒有nfc功能?