线索管理 (Thread Management) |
int pthread_create( pthread_t *thread,
const pthread_attr_t *attr = NULL,
void *(*entry)(void *), void *arg );
创建一个新的执行线索。
错误 EAGAIN,EINVAL
注意 每个进程中线索的最大数PTHREAD_THREADS_MAX 。
int pthread_detach( pthread_t thread );
给指定的线索设置状态PTHREAD_CREATE_DETACHED。
错误 EINVAL,ESRCH
pthread_t pthread_self( void );
返回正调用线索的ID。
错误 没有
int pthread_equal( pthread_t t1, pthread_t t2 );
比较两个线索的ID相等。
错误 没有
void pthread_exit( void *status = NULL );
结束正调用的线索。
错误 没有
int pthread_join( pthread_t thread, void **status = NULL);
和一个线索的结束同步。
错误 EINVAL,ESRCH,EDEADLK
注意 这个函数是一个消去点。
#include <sched.h>
int pthread_getschedparam( pthread_t thread, int *policy, struct sched_param
*param );
得到指定线索的调度策略和参数。
控制 _POSIX_THREAD_PRIORITY_SCHEDULING
错误 ENOSYS,ESRCH
#include <sched.h>
int pthread_setschedparam( pthread_t thread, int policy,
const struct sched_param *param );
设置指定线索的调度策略和参数。
控制 _POSIX_THREAD_PRIORITY_SCHEDULING
错误 ENOSYS,EINVAL,ENOTSUP,EPERM,ESRCH
policy { SCHED_RR,SCHED_FIFO,SCHED_OTHER }
Copyright: NPACT |