- 論壇徽章:
- 0
|
Solaris 線程編程2.....................
EINVAL
描述:
參數(shù)無(wú)效。
EFAULT
描述:
rwlp 或 arg 指向的地址非法。
獲取讀鎖
使用 rw_rdlock(3C) 可以獲取 rwlp 所指向的讀寫(xiě)鎖中的讀鎖。
rw_rdlock 語(yǔ)法
#include <synch.h> (或 #include <thread.h>)int rw_rdlock(rwlock_t *rwlp);
如果讀寫(xiě)鎖中的寫(xiě)鎖已經(jīng)鎖定,則調(diào)用線程將阻塞,直到釋放寫(xiě)鎖為止。否則,將獲取讀鎖。對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_rwlock_rdlock 語(yǔ)法。
rw_rdlock 返回值
rw_rdlock() 在成功完成之后返回零。其他任何返回值都表示出現(xiàn)了錯(cuò)誤。如果出現(xiàn)以下任一情況,該函數(shù)將失敗并返回對(duì)應(yīng)的值。
EINVAL
描述:
參數(shù)無(wú)效。
EFAULT
描述:
rwlp 指向的地址非法。
嘗試獲取讀鎖
使用 rw_tryrdlock(3C) 可以嘗試獲取 rwlp 所指向的讀寫(xiě)鎖中的讀鎖。
rw_tryrdlock 語(yǔ)法
#include <synch.h> (或 #include <thread.h>)int rw_tryrdlock(rwlock_t *rwlp);
如果讀寫(xiě)鎖中的寫(xiě)鎖已經(jīng)鎖定,則 rw_tryrdlock() 將返回錯(cuò)誤。否則,將獲取讀鎖。對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_rwlock_tryrdlock 語(yǔ)法。
rw_tryrdlock 返回值
rw_tryrdlock() 在成功完成之后返回零。其他任何返回值都表示出現(xiàn)了錯(cuò)誤。如果出現(xiàn)以下任一情況,該函數(shù)將失敗并返回對(duì)應(yīng)的值。
EINVAL
描述:
參數(shù)無(wú)效。
EFAULT
描述:
rwlp 指向的地址非法。
EBUSY
描述:
rwlp 所指向的讀寫(xiě)鎖已經(jīng)鎖定。
獲取寫(xiě)鎖
使用 rw_wrlock(3C) 可以獲取 rwlp 所指向的讀寫(xiě)鎖中的寫(xiě)鎖。
rw_wrlock 語(yǔ)法
#include <synch.h> (或 #include <thread.h>)int rw_wrlock(rwlock_t *rwlp);
如果讀寫(xiě)鎖中的讀鎖或?qū)戞i已經(jīng)鎖定,則調(diào)用線程將阻塞,直到釋放所有的讀鎖和寫(xiě)鎖為止。讀寫(xiě)鎖中的寫(xiě)鎖一次只能由一個(gè)線程持有。對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_rwlock_wrlock 語(yǔ)法。
rw_wrlock 返回值
rw_wrlock() 在成功完成之后返回零。其他任何返回值都表示出現(xiàn)了錯(cuò)誤。如果出現(xiàn)以下任一情況,該函數(shù)將失敗并返回對(duì)應(yīng)的值。
EINVAL
描述:
參數(shù)無(wú)效。
EFAULT
描述:
rwlp 指向的地址非法。
嘗試獲取寫(xiě)鎖
使用 rw_trywrlock(3C) 可以嘗試獲取 rwlp 所指向的讀寫(xiě)鎖中的寫(xiě)鎖。
rw_trywrlock 語(yǔ)法
#include <synch.h> (或 #include <thread.h>)int rw_trywrlock(rwlock_t *rwlp);
如果讀寫(xiě)鎖上的讀鎖或?qū)戞i已經(jīng)鎖定,則 rw_trywrlock() 將返回錯(cuò)誤。對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_rwlock_trywrlock 語(yǔ)法。
rw_trywrlock 返回值
rw_trywrlock() 在成功完成之后返回零。其他任何返回值都表示出現(xiàn)了錯(cuò)誤。如果出現(xiàn)以下任一情況,該函數(shù)將失敗并返回對(duì)應(yīng)的值。
EINVAL
描述:
參數(shù)無(wú)效。
EFAULT
描述:
rwlp 指向的地址非法。
EBUSY
描述:
rwlp 所指向的讀寫(xiě)鎖已經(jīng)鎖定。
解除鎖定讀寫(xiě)鎖
使用 rw_unlock(3C) 可以解除鎖定 rwlp 所指向的讀寫(xiě)鎖。
rw_unlock 語(yǔ)法
#include <synch.h> (或 #include <thread.h>)int rw_unlock(rwlock_t *rwlp);
讀寫(xiě)鎖必須處于鎖定狀態(tài),并且調(diào)用線程必須持有讀鎖或?qū)戞i。如果還有其他線程正在等待讀寫(xiě)鎖成為可用,則其中一個(gè)線程將被解除阻塞。對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_rwlock_unlock 語(yǔ)法。
rw_unlock 返回值
rw_unlock() 在成功完成之后返回零。其他任何返回值都表示出現(xiàn)了錯(cuò)誤。如果出現(xiàn)以下任一情況,該函數(shù)將失敗并返回對(duì)應(yīng)的值。
EINVAL
描述:
參數(shù)無(wú)效。
EFAULT
描述:
rwlp 指向的地址非法。
銷(xiāo)毀讀寫(xiě)鎖的狀態(tài)
使用 rwlock_destroy(3C) 可以銷(xiāo)毀與 rlwp 所指向的讀寫(xiě)鎖相關(guān)聯(lián)的任何狀態(tài)。
rwlock_destroy 語(yǔ)法
#include <synch.h> (或 #include <thread.h>)int rwlock_destroy(rwlock_t *rwlp);
用來(lái)存儲(chǔ)讀寫(xiě)鎖的空間不會(huì)釋放。對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_rwlock_destroy 語(yǔ)法。
示例 8–1 使用銀行帳戶(hù)來(lái)說(shuō)明讀寫(xiě)鎖。盡管該程序可能會(huì)允許多個(gè)線程對(duì)帳戶(hù)余額進(jìn)行并行只讀訪問(wèn),但是僅允許使用一個(gè)寫(xiě)入器。請(qǐng)注意,get_balance() 函數(shù)需要使用該鎖才能確保以原子方式添加支票帳戶(hù)余額和儲(chǔ)蓄帳戶(hù)余額。
--------------------------------------------------------------------------------
示例 8–1 讀寫(xiě)銀行帳戶(hù)
rwlock_t account_lock;float checking_balance = 100.0;float saving_balance = 100.0;...rwlock_init(&account_lock, 0, NULL);...floatget_balance() { float bal; rw_rdlock(&account_lock); bal = checking_balance + saving_balance; rw_unlock(&account_lock); return(bal);}voidtransfer_checking_to_savings(float amount) { rw_wrlock(&account_lock); checking_balance = checking_balance - amount; saving_balance = saving_balance + amount; rw_unlock(&account_lock);}
--------------------------------------------------------------------------------
rwlock_destroy 返回值
rwlock_destroy() 在成功完成之后返回零。其他任何返回值都表示出現(xiàn)了錯(cuò)誤。如果出現(xiàn)以下任一情況,該函數(shù)將失敗并返回對(duì)應(yīng)的值。
EINVAL
描述:
參數(shù)無(wú)效。
EINVAL
描述:
set 不為 NULL,并且 how 的值未定義。
終止線程
使用 thr_exit(3C) 可以終止線程。對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_exit 語(yǔ)法。
thr_exit 語(yǔ)法
#include <thread.h>void thr_exit(void *status);
thr_exit 返回值
thr_exit() 不返回到其調(diào)用方。
等待線程終止
使用 thr_join(3C) 可以等待目標(biāo)線程終止。對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_join 語(yǔ)法。
thr_join 語(yǔ)法
#include <thread.h>int thr_join(thread_t tid, thread_t *departedid, void **status);
目標(biāo)線程必須是當(dāng)前進(jìn)程的成員,而不能是分離線程或守護(hù)進(jìn)程線程。
多個(gè)線程不能等待同一個(gè)線程完成,否則僅有一個(gè)線程會(huì)成功完成。其他線程將終止,并返回 ESRCH 錯(cuò)誤。
如果目標(biāo)線程已經(jīng)終止,thr_join() 將不會(huì)阻塞對(duì)調(diào)用線程的處理。
thr_join,加入特定線程
#include <thread.h>thread_t tid;thread_t departedid;int ret;void *status;/* waiting to join thread "tid" with status */ret = thr_join(tid, &departedid, &status);/* waiting to join thread "tid" without status */ret = thr_join(tid, &departedid, NULL);/* waiting to join thread "tid" without return id and status */ret = thr_join(tid, NULL, NULL);
如果 tid 為 (thread_t)0,則 thread_join() 將等待進(jìn)程中的任何非分離線程終止。換句話說(shuō),如果未指定線程標(biāo)識(shí)符,則任何未分離的線程退出都將導(dǎo)致返回 thread_join()。
thr_join,加入任何線程
#include <thread.h>thread_t tid;thread_t departedid;int ret;void *status;/* waiting to join any non-detached thread with status */ret = thr_join(0, &departedid, &status);
通過(guò)在 Solaris thr_join() 中使用 0 來(lái)表示線程 ID,進(jìn)程中的任何非分離線程退出時(shí)都將執(zhí)行加入操作。departedid 表示現(xiàn)有線程的線程 ID。
thr_join 返回值
thr_join() 在成功運(yùn)行后返回 0。如果檢測(cè)到以下任一情況,thr_join() 將失敗并返回對(duì)應(yīng)的值。
ESRCH
描述:
未找到與目標(biāo)線程 ID 對(duì)應(yīng)的非分離線程。
EDEADLK
描述:
檢測(cè)到死鎖,或者目標(biāo)線程的值指定了調(diào)用線程。
創(chuàng)建線程特定的數(shù)據(jù)鍵
使用 thr_keycreate(3C) 可分配鍵,用于標(biāo)識(shí)進(jìn)程中線程特定數(shù)據(jù)。鍵可全局應(yīng)用于進(jìn)程中的所有線程。創(chuàng)建鍵時(shí),每個(gè)線程都會(huì)將一個(gè)值與其綁定。
除了函數(shù)的名稱(chēng)和參數(shù)以外,Solaris 線程的線程特定數(shù)據(jù)與 POSIX 線程的線程特定數(shù)據(jù)完全相同。本節(jié)概述了 Solaris 函數(shù)。 對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_key_create 語(yǔ)法。
thr_keycreate 語(yǔ)法
#include <thread.h>int thr_keycreate(thread_key_t *keyp, void (*destructor) (void *value));
keyp 為每個(gè)綁定線程單獨(dú)維護(hù)特定的值。所有的線程最初都會(huì)綁定到專(zhuān)用元素 keyp,該元素可用于訪問(wèn)其線程特定數(shù)據(jù)。創(chuàng)建鍵時(shí),對(duì)于所有活動(dòng)線程,將為新鍵賦予值 NULL。此外在創(chuàng)建線程時(shí),還會(huì)為以前在新線程中創(chuàng)建的所有鍵賦予值 NULL。
destructor 函數(shù)是可選的,可以將其與每個(gè) keyp 相關(guān)聯(lián)。線程退出時(shí),如果 keyp 具有非 NULL 的 destructor,并且線程具有與 keyp 相關(guān)聯(lián)的非 NULL value,則 destructor 將用當(dāng)前的關(guān)聯(lián) value 進(jìn)行調(diào)用。如果線程退出時(shí)存在多個(gè) destructor 與其相關(guān),則 destructor 的調(diào)用順序是不確定的。
thr_keycreate 返回值
thr_keycreate() 在成功運(yùn)行后返回 0。如果檢測(cè)到以下任一情況,thr_keycreate() 將失敗并返回對(duì)應(yīng)的值。
EAGAIN
描述:
系統(tǒng)資源不足,無(wú)法創(chuàng)建另一個(gè)線程特定的數(shù)據(jù)鍵,或者鍵數(shù)目超過(guò)了 PTHREAD_KEYS_MAX 的每進(jìn)程限制。
ENOMEM
描述:
可用內(nèi)存不足,無(wú)法將 value 與 keyp 相關(guān)聯(lián)。
設(shè)置線程特定的數(shù)據(jù)值
thr_setspecific(3C) 可用來(lái)將 value 綁定到線程特定的數(shù)據(jù)鍵(對(duì)于調(diào)用線程來(lái)說(shuō)為 key)。對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_setspecific 語(yǔ)法。
thr_setspecific 語(yǔ)法
#include <thread.h>int thr_setspecific(thread_key_t key, void *value);
thr_setspecific 返回值
thr_setspecific() 在成功運(yùn)行后返回 0。如果檢測(cè)到以下任一情況,thr_setspecific() 將失敗并返回對(duì)應(yīng)的值。
ENOMEM
描述:
可用內(nèi)存不足,無(wú)法將 value 與 keyp 相關(guān)聯(lián)。
EINVAL
描述:
keyp 無(wú)效。
獲取線程特定的數(shù)據(jù)值
thr_getspecific(3C) 可用來(lái)將當(dāng)前綁定到調(diào)用線程的 key 的值存儲(chǔ)到 valuep 所指向的位置。對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_getspecific 語(yǔ)法。
thr_getspecific 語(yǔ)法
#include <thread.h>int thr_getspecific(thread_key_t key, void **valuep);
thr_getspecific 返回值
thr_getspecific() 在成功運(yùn)行后返回 0。如果檢測(cè)到以下任一情況,thr_getspecific() 將失敗并返回對(duì)應(yīng)的值。
ENOMEM
描述:
可用內(nèi)存不足,無(wú)法將 value 與 keyp 相關(guān)聯(lián)。
EINVAL
描述:
keyp 無(wú)效。
設(shè)置線程的優(yōu)先級(jí)
在 Solaris 線程中,對(duì)于在創(chuàng)建時(shí)與父線程具有不同優(yōu)先級(jí)的線程,可以在 SUSPEND 模式下創(chuàng)建。在暫停之后,可以通過(guò)使用 thr_setprio(3C) 函數(shù)調(diào)用來(lái)修改線程的優(yōu)先級(jí)。thr_setprio() 完成之后,線程可恢復(fù)執(zhí)行。
爭(zhēng)用同步對(duì)象時(shí),高優(yōu)先級(jí)的線程優(yōu)先于低優(yōu)先級(jí)的線程。
thr_setprio 語(yǔ)法
thr_setprio(3C) 可用來(lái)將當(dāng)前進(jìn)程內(nèi) tid 所指定線程的優(yōu)先級(jí)更改為 newprio 所指定的優(yōu)先級(jí)。對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_setschedparam 語(yǔ)法。
#include <thread.h>int thr_setprio(thread_t tid, int newprio)
缺省情況下,線程是基于范圍從 0(最不重要)到 127(最重要)的固定優(yōu)先級(jí)來(lái)調(diào)度的。
thread_t tid;int ret;int newprio = 20;/* suspended thread creation */ret = thr_create(NULL, NULL, func, arg, THR_SUSPENDED, &tid);/* set the new priority of suspended child thread */ret = thr_setprio(tid, newprio);/* suspended child thread starts executing with new priority */ret = thr_continue(tid);
thr_setprio 返回值
thr_setprio() 在成功運(yùn)行后返回 0。如果檢測(cè)到以下任一情況,thr_setprio() 將失敗并返回對(duì)應(yīng)的值。
ESRCH
描述:
tid 指定的值不引用現(xiàn)有的線程。
EINVAL
描述:
priority 的值對(duì)于與 tid 相關(guān)聯(lián)的調(diào)度類(lèi)沒(méi)有意義。
獲取線程的優(yōu)先級(jí)
使用 thr_getprio(3C) 可以獲取線程的當(dāng)前優(yōu)先級(jí)。每個(gè)線程都從其創(chuàng)建者繼承優(yōu)先級(jí)。thr_getprio() 會(huì)將當(dāng)前的優(yōu)先級(jí) tid 存儲(chǔ)到 newprio 所指向的位置。對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_getschedparam 語(yǔ)法。
thr_getprio 語(yǔ)法
#include <thread.h>int thr_getprio(thread_t tid, int *newprio)
thr_getprio 返回值
thr_getprio() 在成功運(yùn)行后返回 0。如果檢測(cè)到以下情況,thr_getprio() 將失敗并返回對(duì)應(yīng)的值。
ESRCH
描述:
tid 指定的值不會(huì)引用現(xiàn)有的線程。
相似的同步函數(shù)-互斥鎖
初始化互斥鎖
銷(xiāo)毀互斥鎖
獲取互斥鎖
釋放互斥鎖
嘗試獲取互斥鎖
初始化互斥鎖
使用 mutex_init(3C) 可以初始化 mp 所指向的互斥鎖。對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)初始化互斥鎖。
mutex_init(3C) 語(yǔ)法
#include <synch.h> #include <thread.h>int mutex_init(mutex_t *mp, int type, void *arg));
type 可以是以下值之一:
USYNC_PROCESS。互斥鎖可用來(lái)同步此進(jìn)程和其他進(jìn)程中的線程。arg 會(huì)被忽略。
USYNC_PROCESS_ROBUST?墒褂没コ鈦(lái)在此進(jìn)程和其他進(jìn)程中可靠地同步線程。arg 會(huì)被忽略。
USYNC_THREAD;コ怄i可用來(lái)僅同步此進(jìn)程中的線程。arg 會(huì)被忽略。
如果進(jìn)程在持有 USYNC_PROCESS 鎖時(shí)失敗,該鎖以后的請(qǐng)求者都將掛起。對(duì)于與客戶(hù)機(jī)進(jìn)程共享鎖的系統(tǒng),此行為會(huì)產(chǎn)生問(wèn)題,因?yàn)榭蛻?hù)機(jī)進(jìn)程會(huì)異常中止。為了避免出現(xiàn)停用進(jìn)程所持有的鎖定掛起的問(wèn)題,請(qǐng)使用 USYNC_PROCESS_ROBUST 來(lái)鎖定互斥鎖。USYNC_PROCESS_ROBUST 增加了兩個(gè)功能:
如果進(jìn)程停用,則系統(tǒng)將解除鎖定該進(jìn)程所持有的全部鎖。
請(qǐng)求失敗進(jìn)程所擁有的任何鎖的下一個(gè)請(qǐng)求者將獲取該鎖。但是,擁有該鎖時(shí)會(huì)返回一個(gè)錯(cuò)誤,指明以前的屬主在擁有該鎖時(shí)失敗。
互斥鎖還可以通過(guò)在清零的內(nèi)存中進(jìn)行分配來(lái)初始化,在這種情況下假定 type 為 USYNC_THREAD。
多個(gè)線程決不能同時(shí)初始化同一個(gè)互斥鎖。如果其他線程正在使用互斥鎖,則不得將該互斥鎖重新初始化。
進(jìn)程內(nèi)的互斥鎖
#include <thread.h>mutex_t mp;int ret;/* to be used within this process only */ret = mutex_init(&mp, USYNC_THREAD, 0);
進(jìn)程間的互斥鎖
#include <thread.h>mutex_t mp;int ret;/* to be used among all processes */ret = mutex_init(&mp, USYNC_PROCESS, 0);
強(qiáng)健的進(jìn)程間互斥
#include <thread.h>mutex_t mp;int ret;/* to be used among all processes */ret = mutex_init(&mp, USYNC_PROCESS_ROBUST, 0);
mutex_init 返回值
mutex_init() 在成功運(yùn)行后返回 0。如果檢測(cè)到以下任一情況,mutex_init() 將失敗并返回對(duì)應(yīng)的值。
EFAULT
描述:
mp 指向的地址非法。
EINVAL
描述:
mp 指定的值無(wú)效。
ENOMEM
描述:
系統(tǒng)內(nèi)存不足,無(wú)法初始化互斥鎖。
EAGAIN
描述:
系統(tǒng)資源不足,無(wú)法初始化互斥鎖。
EBUSY
描述:
系統(tǒng)檢測(cè)到重新初始化活動(dòng)互斥鎖的嘗試。
銷(xiāo)毀互斥鎖
使用 mutex_destroy(3C) 可以銷(xiāo)毀與 mp 所指向的互斥鎖相關(guān)聯(lián)的任何狀態(tài)。用來(lái)存儲(chǔ)該互斥鎖的空間不會(huì)釋放。對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_mutex_destroy 語(yǔ)法。
mutex_destroy 語(yǔ)法
#include <thread.h>int mutex_destroy (mutex_t *mp);
mutex_destroy 返回值
mutex_destroy() 在成功運(yùn)行后返回 0。如果檢測(cè)到以下情況,mutex_destroy() 將失敗并返回對(duì)應(yīng)的值。
EFAULT
描述:
mp 指向的地址非法。
獲取互斥鎖
使用 mutex_lock(3C) 可以鎖定 mp 所指向的互斥鎖。如果該互斥鎖已經(jīng)鎖定,調(diào)用線程將會(huì)阻塞,直到該互斥鎖成為可用為止。調(diào)用線程會(huì)在具有優(yōu)先級(jí)的隊(duì)列中等待。對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_mutex_lock 語(yǔ)法。
mutex_lock 語(yǔ)法
#include <thread.h>int mutex_lock(mutex_t *mp);
mutex_lock 返回值
mutex_lock() 在成功運(yùn)行后返回 0。如果檢測(cè)到以下任一情況,mutex_lock() 將失敗并返回對(duì)應(yīng)的值。
EFAULT
描述:
mp 指向的地址非法。
EDEADLK
描述:
互斥鎖已經(jīng)鎖定并且由調(diào)用線程擁有。
釋放互斥鎖
使用 mutex_unlock(3C) 可以解除鎖定 mp 所指向的互斥鎖。該互斥鎖必須鎖定。調(diào)用線程必須是最后一個(gè)鎖定該互斥鎖的線程,即該互斥鎖的屬主。對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_mutex_unlock 語(yǔ)法。
mutex_unlock 語(yǔ)法
#include <thread.h>int mutex_unlock(mutex_t *mp);
mutex_unlock 返回值
mutex_unlock() 在成功運(yùn)行后返回 0。如果檢測(cè)到以下任一情況,mutex_unlock() 將失敗并返回對(duì)應(yīng)的值。
EFAULT
描述:
mp 指向的地址非法。
EPERM
描述:
調(diào)用線程不擁有該互斥鎖。
嘗試獲取互斥鎖
使用 mutex_trylock(3C) 可以嘗試鎖定 mp 所指向的互斥鎖。此函數(shù)是 mutex_lock() 的非阻塞版本。對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_mutex_trylock 語(yǔ)法。
mutex_trylock 語(yǔ)法
#include <thread.h>int mutex_trylock(mutex_t *mp);
mutex_trylock 返回值
mutex_trylock() 在成功運(yùn)行后返回 0。如果檢測(cè)到以下任一情況,mutex_trylock() 將失敗并返回對(duì)應(yīng)的值。
EFAULT
描述:
mp 指向的地址非法。
EBUSY
描述:
系統(tǒng)檢測(cè)到重新初始化活動(dòng)互斥鎖的嘗試。
相似的同步函數(shù):條件變量
初始化條件變量
銷(xiāo)毀條件變量
等待條件
等待絕對(duì)時(shí)間
等待時(shí)間間隔
解除阻塞一個(gè)線程
解除阻塞所有線程
初始化條件變量
使用 cond_init(3C) 可以初始化 cv 所指向的條件變量。
cond_init 語(yǔ)法
#include <thread.h>int cond_init(cond_t *cv, int type, int arg);
type 可以是以下值之一:
USYNC_PROCESS。條件變量可用來(lái)同步此進(jìn)程和其他進(jìn)程中的線程。arg 會(huì)被忽略。
USYNC_THREAD。條件變量可用來(lái)僅同步此進(jìn)程中的線程。arg 會(huì)被忽略。
條件變量還可以通過(guò)在清零的內(nèi)存中進(jìn)行分配來(lái)初始化,在這種情況下假設(shè) type 為 USYNC_THREAD。
多個(gè)線程決不能同時(shí)初始化同一個(gè)條件變量。對(duì)于其他線程可能正在使用的條件變量,不得重新初始化。
對(duì)于 POSIX 線程,請(qǐng)參見(jiàn)pthread_condattr_init 語(yǔ)法。
|
|