用户空间线程 pthread

1 pthread相关函数
pthread_ 线程本身和各种相关函数
pthread_attr_ 线程属性对象
pthread_mutex_ 互斥量
pthread_mutexattr_ 互斥量属性对象
pthread_cond_ 条件变量
pthread_condattr_ 条件变量属性对象
pthread_key_ 线程数据键(Thread-specific data keys)

(1)线程属性相关函数
int pthread_attr_init(pthread_attr_t *attr);
int pthread_attr_destroy(pthread_attr_t attr);
/
栈空间大小 */
PTHREAD_STACK_MIN // 0x4000
int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize);
int pthread_attr_getstacksize(pthread_attr_t *attr, size_t stacksize);
/
分离状态 */
PTHREAD_CREATE_JOINABLE
PTHREAD_CREATE_DETACHED
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
int pthread_attr_getdetachstate(pthread_attr_t *attr, int detachstate);
/
作用域 */
PTHREAD_SCOPE_SYSTEM
PTHREAD_SCOPE_PROCESS
int pthread_attr_setscope(pthread_attr_t *attr, int scope);
int pthread_attr_getscope(pthread_attr_t *attr, int scope);
/
调度策略 */
SCHED_FIFO
SCHED_RR
SCHED_OTHER
int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy);
int pthread_attr_getschedpolicy(pthread_attr_t *attr, int policy);
/
调度优先级 */
#include <sched.h>
MAX:int sched_get_priority_max(int policy); // 99
MIN:int sched_get_priority_min(int policy); // 1
int pthread_attr_setschedparam(pthread_attr_t *attr,const struct sched_param *param);
int pthread_attr_getschedparam(pthread_attr_t *attr,struct sched_param param);
/
继承属性 */
PTHREAD_INHERIT_SCHED
PTHREAD_EXPLICIT_SCHED
int pthread_attr_setinheritsched(pthread_attr_t *attr,int inheritsched);
int pthread_attr_getinheritsched(pthread_attr_t *attr,int inheritsched);
/
栈末尾的警戒缓冲区大小 */
int pthread_attr_setguardsize(pthread_attr_t *attr, size_t guardsize);
int pthread_attr_getguardsize(pthread_attr_t *attr, size_t guardsize);
/
栈空间地址 */
int pthread_attr_setstackaddr(pthread_attr_t *attr, void *stackaddr);
int pthread_attr_getstackaddr(pthread_attr_t *attr, void **stackaddr);
(2)线程操作相关函数
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
void pthread_exit(void *retval);
pthread_t pthread_self(void);
int pthread_equal(pthread_t t1, pthread_t t2);
int pthread_join(pthread_t thread, void **retval);
int pthread_cancel(pthread_t thread);
int pthread_kill(pthread_t thread, int sig);
int pthread_detach(pthread_t thread);
int pthread_self(): 查询线程自身线程标识号
(3) 线程同步函数
pthread_mutexattr_init
pthread_mutex_init() 初始化互斥锁
pthread_mutex_destroy() 删除互斥锁
pthread_mutex_lock():占有互斥锁(阻塞操作)
pthread_mutex_trylock():试图占有互斥锁(不阻塞操作)。当互斥锁空闲时将占有该锁;否则立即返回
pthread_mutex_unlock(): 释放互斥锁
pthread_mutexattr_init ;初始化互斥锁属性对象
pthread_mutexattr_destroy 销毁互斥锁属性对象
pthread_mutexattr_setpshared 设置互斥锁范围
pthread_mutexattr_getpshared 获取互斥锁范围
pthread_mutexattr_settype 设置互斥锁的类型属性
pthread_mutexattr_gettype 获取互斥锁的类型属性
pthread_mutexattr_setprotocol 设置互斥锁属性的协议
pthread_mutexattr_getprotocol 获取互斥锁属性的协议
pthread_mutexattr_setprioceiling 设置互斥锁属性的优先级上限
pthread_mutexattr_getprioceiling 获取互斥锁属性的优先级上限
pthread_mutex_setprioceiling 设置互斥锁的优先级上限
pthread_mutex_getprioceiling 获取互斥锁的优先级上限
pthread_mutexattr_setrobust_np 设置互斥锁的强健属性
pthread_mutexattr_getrobust_np 获取互斥锁的强健属性

pthread_cond_init():初始化条件变量
pthread_cond_destroy():销毁条件变量
pthread_cond_wait(): 等待条件变量的特殊条件发生
pthread_cond_signal(): 唤醒第一个调用
pthread_cond_wait()而进入睡眠的线程
pthread_condattr_init 初始化条件变量属性
pthread_condattr_destroy 删除条件变量属性
pthread_condattr_setpshared 设置条件变量的范围
pthread_condattr_getpshared 获取条件变量的范围
pthread_condattr_getclock 获取pthread_cond_timewait函数使用的时钟ID
pthread_condattr_setclock 设置pthread_cond_timewait函数使用的时钟ID

(4) 线程私有数据域
Thread-local storage(或者以Pthreads术语,称作 线程特有数据):
pthread_key_create(): 分配用于标识进程中线程特定数据的键
pthread_setspecific(): 为指定线程特定数据键设置线程特定绑定
pthread_getspecific(): 获取调用线程的键绑定,并将该绑定存储在 value 指向的位置中
pthread_key_delete(): 销毁现有线程特定数据键

2 pthread函数库列表
int pthread_atfork (void (*prepare)(void),
void (*parent)(void),
void (*child)(void));
int pthread_attr_destroy (pthread_attr_t *attr);
int pthread_attr_getdetachstate (const pthread_attr_t *attr,
int *detachstate);
int pthread_attr_getguardsize (const pthread_attr_t *restrict attr,
size_t *restrict guardsize);
int pthread_attr_getinheritsched (const pthread_attr_t *restrict attr,
int *restrict inheritsched);
int pthread_attr_getschedparam (const pthread_attr_t *restrict attr,
struct sched_param *restrict param);
int pthread_attr_getschedpolicy (const pthread_attr_t *restrict attr,
int *restrict policy);
int pthread_attr_getscope (const pthread_attr_t *restrict attr,
int *restrict contentionscope);
int pthread_attr_getstack (const pthread_attr_t *restrict attr,
void **restrict stackaddr,
size_t *restrict stacksize);
int pthread_attr_getstackaddr (const pthread_attr_t *restrict attr,
void **restrict stackaddr);
int pthread_attr_getstacksize (const pthread_attr_t *restrict attr,
size_t *restrict stacksize);
int pthread_attr_init (pthread_attr_t *attr);
int pthread_attr_setdetachstate (pthread_attr_t *attr,
int detachstate);
int pthread_attr_setguardsize (pthread_attr_t *attr,
size_t guardsize);
int pthread_attr_setinheritsched (pthread_attr_t *attr,
int inheritsched);
int pthread_attr_setschedparam (pthread_attr_t *restrict attr,
const struct sched_param *restrict param);
int pthread_attr_setschedpolicy (pthread_attr_t *attr,
int policy);
int pthread_attr_setscope (pthread_attr_t *attr,
int contentionscope);
int pthread_attr_setstack (pthread_attr_t *attr,
void *stackaddr,
size_t stacksize);
int pthread_attr_setstackaddr (pthread_attr_t *attr,
void *stackaddr);
int pthread_attr_setstacksize (pthread_attr_t *attr,
size_t stacksize);
int pthread_barrier_destroy (pthread_barrier_t *barrier);
int pthread_barrier_init (pthread_barrier_t *restrict barrier,
const pthread_barrierattr_t *restrict attr,
unsigned count);
int pthread_barrier_wait (pthread_barrier_t *barrier);
int pthread_barrierattr_destroy (pthread_barrierattr_t *attr);
int pthread_barrierattr_getpshared (const pthread_barrierattr_t * restrict attr,
int *restrict pshared);
int pthread_barrierattr_init (pthread_barrierattr_t *attr);
int pthread_barrierattr_setpshared (pthread_barrierattr_t *attr,
int pshared);
int pthread_cancel (pthread_t thread);
int pthread_cond_broadcast (pthread_cond_t *cond);
int pthread_cond_destroy (pthread_cond_t *cond);
int pthread_cond_init (pthread_cond_t *restrict cond,
const pthread_condattr_t *restrict attr);
int pthread_cond_signal (pthread_cond_t *cond);
int pthread_cond_timedwait (pthread_cond_t *restrict cond,
pthread_mutex_t *restrict mutex,
const struct timespec *restrict abstime);
int pthread_cond_wait (pthread_cond_t *restrict cond,
pthread_mutex_t *restrict mutex);
int pthread_condattr_destroy (pthread_condattr_t *attr);
int pthread_condattr_getclock (const pthread_condattr_t *restrict attr,
clockid_t *restrict clock_id);
int pthread_condattr_getpshared (const pthread_condattr_t *restrict attr,
int *restrict pshared);
int pthread_condattr_init (pthread_condattr_t *attr);
int pthread_condattr_setclock (pthread_condattr_t *attr,
clockid_t clock_id);
int pthread_condattr_setpshared (pthread_condattr_t *attr,
int pshared);
int pthread_create (pthread_t *restrict thread,
const pthread_attr_t *restrict attr,
void *(start_routine)(void),
void *restrict arg);
int pthread_detach (pthread_t thread);
int pthread_equal (pthread_t t1,
pthread_t t2);
int pthread_getconcurrency (void);
int pthread_getcpuclockid (pthread_t thread_id,
clockid_t *clock_id);
int pthread_getschedparam (pthread_t thread,
int *restrict policy,
struct sched_param *restrict param);
int pthread_join (pthread_t thread,
void **value_ptr);
int pthread_key_create (pthread_key_t *key,
void (destructor)(void));
int pthread_key_delete (pthread_key_t key);
int pthread_kill (pthread_t thread,
int sig);
int pthread_mutex_destroy (pthread_mutex_t *mutex);
int pthread_mutex_getprioceiling (const pthread_mutex_t *restrict mutex,
int *restrict prioceiling);
int pthread_mutex_init (pthread_mutex_t *restrict mutex,
const pthread_mutexattr_t *restrict attr);
int pthread_mutex_lock (pthread_mutex_t *mutex);
int pthread_mutex_setprioceiling (pthread_mutex_t *restrict mutex,
int prioceiling,
int *restrict old_ceiling);
int pthread_mutex_timedlock (pthread_mutex_t *restrict mutex,
const struct timespec *restrict abs_timeout);
int pthread_mutex_trylock (pthread_mutex_t *mutex);
int pthread_mutex_unlock (pthread_mutex_t *mutex);
int pthread_mutexattr_destroy (pthread_mutexattr_t *attr);
int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t * restrict attr,
int *restrict prioceiling);
int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * restrict attr,
int *restrict protocol);
int pthread_mutexattr_getpshared (const pthread_mutexattr_t * restrict attr,
int *restrict pshared);
int pthread_mutexattr_gettype (const pthread_mutexattr_t *restrict attr,
int *restrict type);
int pthread_mutexattr_init (pthread_mutexattr_t *attr);
int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *attr,
int prioceiling);
int pthread_mutexattr_setprotocol (pthread_mutexattr_t *attr,
int protocol);
int pthread_mutexattr_setpshared (pthread_mutexattr_t *attr,
int pshared);
int pthread_mutexattr_settype (pthread_mutexattr_t *attr,
int type);
int pthread_once (pthread_once_t *once_control,
void (*init_routine)(void));
int pthread_rwlock_destroy (pthread_rwlock_t *rwlock);
int pthread_rwlock_init (pthread_rwlock_t *restrict rwlock,
const pthread_rwlockattr_t *restrict attr);
int pthread_rwlock_rdlock (pthread_rwlock_t *rwlock);
int pthread_rwlock_timedrdlock (pthread_rwlock_t *restrict rwlock,
const struct timespec *restrict abs_timeout);
int pthread_rwlock_timedwrlock (pthread_rwlock_t *restrict rwlock,
const struct timespec *restrict abs_timeout);
int pthread_rwlock_tryrdlock (pthread_rwlock_t *rwlock);
int pthread_rwlock_trywrlock (pthread_rwlock_t *rwlock);
int pthread_rwlock_unlock (pthread_rwlock_t *rwlock);
int pthread_rwlock_wrlock (pthread_rwlock_t *rwlock);
int pthread_rwlockattr_destroy (pthread_rwlockattr_t *attr);
int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * restrict attr,
int *restrict pshared);
int pthread_rwlockattr_init (pthread_rwlockattr_t *attr);
int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *attr,
int pshared);
int pthread_setcancelstate (int state,
int *oldstate);
int pthread_setcanceltype (int type,
int *oldtype);
int pthread_setconcurrency (int new_level);
int pthread_setschedparam (pthread_t thread,
int policy,
const struct sched_param *param);
int pthread_setschedprio (pthread_t thread,
int prio);
int pthread_setspecific (pthread_key_t key,
const void *value);
int pthread_sigmask (int how,
const sigset_t *restrict set,
sigset_t *restrict oset);
int pthread_spin_destroy (pthread_spinlock_t *lock);
int pthread_spin_init (pthread_spinlock_t *lock,
int pshared);
int pthread_spin_lock (pthread_spinlock_t *lock);
int pthread_spin_trylock (pthread_spinlock_t *lock);
int pthread_spin_unlock (pthread_spinlock_t *lock);
int sigprocmask (int how,
const sigset_t *restrict set,
sigset_t *restrict oset);
pthread_t pthread_self (void);
void *pthread_getspecific (pthread_key_t key);
void pthread_cleanup_pop (int execute);
void pthread_cleanup_push (void (routine)(void),
void *arg);
void pthread_exit (void *value_ptr);
void pthread_testcancel (void);
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_once_t once_control = PTHREAD_ONCE_INIT;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值