1.pthread_mutex_init互斥鎖初始化
函式原型:int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);
函式功能:初始化互斥鎖
函式引數:mutex 互斥鎖控制代碼
attr 互斥鎖屬性
返回值:成功返回0,失敗返回對應的錯誤碼
說明:初始化乙個已經初始化過的互斥鎖會導致未知的問題;
mutex如果是靜態分配的,可以用pthread_mutex_initializer進行初始化,如果是動態分配的,需要用attr宣告其屬性;
2.pthread_mutex_destroy銷毀互斥鎖
函式原型: int pthread_mutex_destroy(pthread_mutex_t *mutex);
函式功能:初始化互斥鎖
函式引數:mutex 互斥鎖控制代碼
返回值:成功返回0,失敗返回對應的錯誤碼
說明:銷毀乙個未釋放的互斥鎖會導致未知的問題;
3.pthread_mutex_lock獲取互斥鎖
函式原型: int pthread_mutex_lock(pthread_mutex_t *mutex);
函式功能:獲取乙個互斥鎖
函式引數:mutex 互斥鎖控制代碼
返回值:成功返回0,失敗返回對應的錯誤碼
說明:銷毀乙個未釋放的互斥鎖會導致未知的問題;
4.pthread_mutex_timedlock獲取互斥鎖並設定超時
函式原型: int pthread_mutex_timedlock(pthread_mutex_t *restrict mutex, const struct timespec *restrict abs_timeout);
函式功能:獲取互斥鎖,如果這個互斥鎖被別的執行緒鎖定,那麼超過abs_timeout指定的時間自動退出
返回值:成功返回0,如果鎖被其它執行緒鎖定,返回ebusy
5.pthread_mutex_trylock非阻塞獲取鎖
函式原型: int pthread_mutex_trylock(pthread_mutex_t *mutex);
函式功能:以非阻塞的方式獲取互斥鎖
返回值:成功返回0,如果鎖被其它執行緒鎖定,返回ebusy
1.pthread_spin_init初始化
函式原型:int pthread_spin_init(pthread_spinlock_t *lock, int pshared);
函式引數:lock 自旋鎖控制代碼
pshared pthread_process_shared表示自旋鎖允許多程序使用,pthread_process_private只允許同一程序下的多個執行緒使用
2.pthread_spin_lock獲取鎖,阻塞方式
函式原型:int pthread_spin_lock(pthread_spinlock_t *lock);
3.pthread_spin_unlock釋放鎖
函式原型: int pthread_spin_unlock(pthread_spinlock_t *lock);
4.pthread_spin_trylock非阻塞方式
函式原型: int pthread_spin_trylock(pthread_spinlock_t *lock);
程序間通訊 和 執行緒間同步
前經常搞混,所以記錄下來。程序間通訊主要是指多個程序間的資料互動。而執行緒間同步主要指維護多個執行緒之間資料準確 一致性。一.程序間通訊主要有以下幾種方式 管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。有名管道 ...
執行緒間通訊 同步
同步 是指多個任務按照約定的先後次序 相互配合完成一件事情 訊號量 由訊號量決定 執行緒是繼續執行 還是阻塞等待 訊號量代表某種資源 其值表示系統中該資源的數量 訊號量是乙個受保護的量 只能通過特定的三種操作來訪問 初始化p操作 申請資源,有可能阻塞 v操作 釋放資源,不會阻塞 p s 操作 if ...
同步執行緒和程序間的通訊
最近回去學習了一下程序和程序間的通訊,有時候很多東西久不看了也就一下子忘了 這裡面有好幾個互斥物件使用執行緒的 1 void mlisttext cstring str 26 789dword winapi thread1 lpvoid lpparameter 1024 25dword winapi...