1.线程及通信
2017-08-15 本文已影响0人
石不琢
1、线程
创建线程
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
参数:- thread存储线程ID
- attr线程属性,NULL默认属性8M的栈空间
- start_routine线程的执行体函数
- arg用于向start_routine传递的参数
返回:成功 return 0;
结束一个进程
void pthread_exit(void *retval);
等待一个进程结束
int pthread_join(pthread_t thread, void **retval);
2、互斥量
初始化互斥量
int pthread_mutex_init(pthread_mutex_t * mutex, const pthread_mutexattr_t * attr);
上锁
int pthread_mutex_lock(pthread_mutex_t *mutex);
解锁
int pthread_mutex_unlock(pthread_mutex_t *mutex);
销毁互斥量
int pthread_mutex_destroy(pthread_mutex_t *mutex);
3、条件量
初始化条件量
int pthread_cond_init(pthread_cond_t * cond, const pthread_condattr_t * attr);
产生一个条件量,并发送
int pthread_cond_signal(pthread_cond_t *cond);
等待一个条件量的产生,如果条件量已经发送过,wait将处于死等状态
int pthread_cond_wait(pthread_cond_t * cond, pthread_mutex_t *mutex);
销毁条件量
int pthread_cond_destroy(pthread_cond_t *cond);
4、信号量
初始化信号量
int sem_init(sem_t *sem, int pshared, unsigned int value);
P操作:消耗一个信号量,为0时阻塞
int sem_wait(sem_t *sem);
V操作:产生一个信号量
int sem_post(sem_t *sem);
销毁信号量
int sem_destroy(sem_t *sem);