blp 4th edition-Chapter 12-Posix threads

创建线程

int pthread_create(pthread_t *thread,pthread_attr_t *attr,void *(*start_routine)(void *),void *arg);

return 0 on success,an error number if anything goes wrong

结束线程

void pthread_exit(void * retval);

等待线程结束,线程版的wait

int pthread_join(pthread_t th,void * * thread_return);

取消线程

int pthread_cancel(pthread_t thread);

int pthread_setcancelstate(int state,int * oldstate);

unix下函数经常有个old*参数用来保存之前的值用来retrieve

state可以是PTHREAD_CANCEL_ENALE 或者PTHREAD_CANCEL_DISABLE

int pthread_setcanceltype(int type,int * oldtype);

还可以用上面的函数来设置cancel,如果是PTHREAD_CANCEL_ASYNCHRONOUS,那么cancel立即执行

如果是PTHREAD_CANCEL_DEFERRED那么等待thread从pthread_join等cancel point函数后才cancel


 

创建binary semaphore

int sem_init(set_t *sem,int pshared,unsigned int value);

Linux下面pshared通常为0,表示只与同一进程中的线程共享

PV原子操作

int sem_wait(set_t * sem);

int sem_post(set_t * sem);

int sem_trywait(set_t * sem);

int sem_destory(sem_t * sem);


 

创建Mutex

int pthread_mutex_init(pthread_mutex_t * mutex,const pthread_muteattr_t * mutexattr);

锁与解锁

int pthread_mutex_lock(pthread_mutex_t * mutex);

int pthread_mutex_trylock(pthread_mutex_t *mutex);

int pthread_mutex_unlock(pthread_mutex_t * mutex);

int pthread_mutex_destroy(pthread_mutex_t * mutex);

pthread多线程的函数一般return 0 on success,erro number if fail

 


 

线程属性 Thread Attributes

初始化Thread Attributes

int pthread_attr_init(pthread_attr_t * attr);

int pthread_attr_destroy(pthead_attr_t * attr);

下面的四个函数比较常用

int pthread_attr_setdetachstate(pthread_attr_t * attr,int detachstate);

int pthread_attr_getdetachstate(pthread_attr_t * attr,int * detachstate);

上面两个函数detachstate avoid the need for threads to rejoin,the value may be PTHREAD_CREATE_JOINABLE and PTHREAD_CREATE_DETACHED

int pthread_attr_setschedpolicy(pthread_attr_t * attr,int policy);

int pthread_attr_getschedpolicy(const pthread_attr_t * attr,int * policy);

上面两个函数controls how threads are scheduled,the value may be SCHED_OTHER(default),SCHED_RR,SCHED_FIFO

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值