4. API 比较细节 |
注意 - 用户可自由地用Solaris函数插入到pthreads 函数。从这个混合中将不会导致负面影响。使用此兼容性可以用pthreads 功能支持Solaris功能,或者相反。
#include <thread.h>
int thr_suspend (thread_t tid)
int thr_continue (thread_t tid)
int thr_setconcurrency (int new_level)
int thr_getconcurrency (void)
thr_suspend() 挂起被说明的线索。目标线索阻塞,直到调用thr_continue 。信号不能唤醒挂起的线索,它们保持挂起,直到线索继续执行。对一个挂起线索,调用此函数将没有效果。
thread_t tid; /* tid from thr_create()*/
pthread_t ptid; /* pthreads equivalent of Solaris tid from thread created with pthread_create()*/
int ret; ret = thr_suspend (tid);
ret = thr_suspend ((thread_t) ptid); /* using pthreads ID variable with a cast */
thr_continue()继续执行被说明挂起的线索。对于非挂起的线索,调用此函数将没有效果。在pthreads中定义的pthread_t tid 与在Solaris线索中的thread_t tid 一样。可以通过强制赋值以互换地使用tid。
thread_t tid; /* tid from thr_create()*/
pthread_t ptid; /* pthreads equivalent of Solaris tid from thread created with pthread_create()*/
int ret;
ret = thr_continue (tid);
ret = thr_continue ((thread_t) ptid) /* using pthreads ID variable with a cast */
thr_setconcurrency() 提供给系统一个有关所要求的应用程序中的并发级别的暗示,系统确保足够数目的线索是活跃的,使得进程继续进行。
int level;
int ret;
level = 5;
ret = thr_setconcurrency (level);
thr_getconcurrency() 返回进程中当前的并发级别。此数用于决定所要求的并行级别。
int level;
level = thr_getconcurrency (void);
Copyright: NPACT |