欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux多線程鎖屬性設(shè)置方法

 更新時間:2017年01月05日 10:16:30   投稿:jingxian  
下面小編就為大家?guī)硪黄狶inux多線程鎖屬性設(shè)置方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

互斥鎖是Linux下多線程資源保護(hù)的常用手段,但是在時序復(fù)雜的情況下,很容易會出現(xiàn)死鎖的情況。

可以通過設(shè)置鎖的屬性,避免同一條線程重復(fù)上鎖導(dǎo)致死鎖的問題。

通過int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int type)接口設(shè)置

一般是以下四種屬性:

PTHREAD_MUTEX_NORMAL
This type of mutex does not detect deadlock. A thread attempting to relock this mutex without first unlocking it will deadlock. Attempting to unlock a mutex locked by a different thread results in undefined behaviour. Attempting to unlock an unlocked mutex results in undefined behaviour.

PTHREAD_MUTEX_ERRORCHECK
This type of mutex provides error checking. A thread attempting to relock this mutex without first unlocking it will return with an error. A thread attempting to unlock a mutex which another thread has locked will return with an error. A thread attempting to unlock an unlocked mutex will return with an error.

PTHREAD_MUTEX_RECURSIVE
A thread attempting to relock this mutex without first unlocking it will succeed in locking the mutex. The relocking deadlock which can occur with mutexes of type PTHREAD_MUTEX_NORMAL cannot occur with this type of mutex. Multiple locks of this mutex require the same number of unlocks to release the mutex before another thread can acquire the mutex. A thread attempting to unlock a mutex which another thread has locked will return with an error. A thread attempting to unlock an unlocked mutex will return with an error.

PTHREAD_MUTEX_DEFAULT
Attempting to recursively lock a mutex of this type results in undefined behaviour. Attempting to unlock a mutex of this type which was not locked by the calling thread results in undefined behaviour. Attempting to unlock a mutex of this type which is not locked results in undefined behaviour. An implementation is allowed to map this mutex to one of the other mutex types.

這里主要指同一條線程重復(fù)上鎖,不同線程上鎖,無論設(shè)置什么屬性,當(dāng)鎖已經(jīng)被鎖定后都會互斥阻塞。

使用PTHREAD_MUTEX_RECURSIVE屬性,當(dāng)同一條線程在沒有解鎖的情況下嘗試再次鎖定會返回成功。

以上就是小編為大家?guī)淼腖inux多線程鎖屬性設(shè)置方法全部內(nèi)容了,希望大家多多支持腳本之家~

相關(guān)文章

最新評論