1.线程及通信

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);

你可能感兴趣的:(1.线程及通信)