多线程编程指南

设置范围

请使用 pthread_attr_setscope(3C) 建立线程的争用范围(PTHREAD_SCOPE_SYSTEMPTHREAD_SCOPE_PROCESS)。 使用 PTHREAD_SCOPE_SYSTEM 时,此线程将与系统中的所有线程进行竞争。使用 PTHREAD_SCOPE_PROCESS 时,此线程将与进程中的其他线程进行竞争。


注 –

只有在给定进程中才能访问这两种线程类型。


pthread_attr_setscope 语法

int	pthread_attr_setscope(pthread_attr_t *tattr,int scope);
#include <pthread.h>



pthread_attr_t tattr;

int ret;



/* bound thread */

ret = pthread_attr_setscope(&tattr, PTHREAD_SCOPE_SYSTEM);



/* unbound thread */

ret = pthread_attr_setscope(&tattr, PTHREAD_SCOPE_PROCESS);

本示例使用三个函数调用:用于初始化属性的调用、用于根据缺省属性设置所有变体的调用,以及用于创建 pthreads 的调用。

#include <pthread.h>



pthread_attr_t attr;

pthread_t tid;

void start_routine;

void arg;

int ret;



/* initialized with default attributes */

ret = pthread_attr_init (&tattr);



/* BOUND behavior */

ret =  pthread_attr_setscope(&tattr, PTHREAD_SCOPE_SYSTEM);

ret = pthread_create (&tid, &tattr, start_routine, arg);

pthread_attr_setscope 返回值

pthread_attr_setscope() 成功完成后将返回零。其他任何返回值都表示出现了错误。如果出现以下情况,该函数将失败并返回对应的值。


EINVAL

描述:

尝试将 tattr 设置为无效的值。