pthread_create()函数
函数功能 | 创建线程,并执行相应的线程函数,在该函数执行结束后,此线程结束 |
头文件 | #include <pthread.h> |
函数原型 | int pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg) |
函数传入值 | thread:线程标识符 |
attr:线程属性设置 | |
start_toutine:线程执行函数,参数和返回值都为void * | |
arg:传递给start_routine的参数 | |
函数返回值 | 成功:0 |
出错:返回错误码 |
pthread_exit()函数
函数功能 | 结束当前线程 |
头文件 | #include <pthread.h> |
函数原型 | void pthread_exit(void *retval) |
函数传入值 | retval:线程结束时的返回值,可通过pthread_join函数来接收 |
// 在使用线程函数时,不能使用exit()函数退出,exit()函数是进程退出函数,通常一个进程包含着若干个线程,如果使用exit()函数,该进程下的所有线程都会结束
pthread_join函数
函数功能 | (线程阻塞函数),调用它的函数将一直等待到指定的线程结束为止,再回收等待线程结束状态值 |
头文件 | #include <pthread.h> |
函数原型 | int pthread_join(pthread_t thread, void **thread_result) |
函数传入值 | thread:等待线程的标识符 |
thread_result:用户定义的指针,用来接收被等待线程结束时的返回值(不为NULL时) | |
函数返回值 | 成功:0 |
出错:返回错误码 |
// pthread_create()函数和pthread_join()函数一般成对出现
pthread_cancel()函数
函数功能 | 在一个线程中终止另一个线程 |
头文件 | #include <pthread.h> |
函数原型 | int pthread_cancel(pthread_t thread) |
函数传入值 | thread:要取消的线程标识符 |
函数返回值 | 成功:0 |
出错:返回错误码 |
// pthread_cancel()函数是终止其他线程的执行,但被结束的线程内部需要先调用pthread_setcancel()函数和pthread_setcancelytpe()函数设置相应的取消状态
sem_init()函数
函数功能 | 初始化信号量 |
头文件 | #include <semaphore.h> |
函数原型 | int semsem_init(sem_t *sem, int pshared, unsigned int value) |
函数传入值 | sem:信号量对象 |
pshared:决定信号量能否在进程间共享。 | |
value:信号量初始化值 | |
函数返回值 | 成功:0 |
出错:-1 |
sem_wait()函数
函数功能 | 获取信号量,若不成功则阻塞 |
头文件 | #include <pthread.h> |
函数原型 | int sem_wait(sem_t *sem) |
函数传入值 | sem:信号量对象 |
函数返回值 | 成功:0 |
出错:-1 |
// sem_wait()函数和sem_trywait()函数相当于P操作,在信号量大于零时,他们将信号量的值-1;在信号量的值为零时,sem_wait()函数将会阻塞线程,而sem_trywait()函数则立即返回
sem_trywait()函数
函数功能 | 获取信号,若不成功立即返回 |
头文件 | #include <pthread.h> |
函数原型 | int sem_trywait(sem_t *sem) |
函数传入值 | sem:信号量对象 |
函数返回值 | 成功:0 |
出错:-1 |
sem_post()函数
函数功能 | 释放信号量 |
头文件 | #include <pthread.h> |
函数原型 | int sem_post(sem_t *sem) |
函数传入值 | sem:信号量对象 |
函数返回值 | 成功:0 |
出错:-1 |
// sem_post()函数相当于V操作,他将信号量的值+1,同时唤醒等待的线程
sem_getvalue()函数
函数功能 | 获取信号量的值 |
头文件 | #include <pthread.h> |
函数原型 | inr sem_getvalue(sem_t *sem) |
函数传入值 | sem:信号量对象 |
函数返回值 | 成功:0 |
出错:-1 |
sem_destroy()函数
函数功能 | 删除信号量 |
头文件 | #include <pthread.h> |
函数原型 | int sem_destroy(sem_t *sem) |
函数传入值 | sem:信号量对象 |
函数返回值 | 成功:0 |
出错:-1 |
pthread_mutex_init()函数
函数功能 | 初始化互斥锁 |
头文件 | #include <pthread.h> |
函数原型 | int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr) |
函数传入值 | mutex:互斥锁 |
mutexattr:互斥锁属性,NULL表示缺省属性 | |
函数返回值 | 成功:0 |
出错:返回错误码 |
pthread_mutex_lock()函数
函数功能 | 对互斥锁上锁,若不成功则阻塞 |
头文件 | #include <pthread.h> |
函数原型 | int pthread_mutex_lock(pthread_mutex_t *mutex) |
函数传入值 | mutex:互斥锁 |
函数返回值 | 成功:0 |
出错:-1 |
pthread_mutex_trylock()函数
函数功能 | 对互斥锁上锁,若不成功(线程已被锁定)则将立即返回;否则,对其上锁 |
头文件 | #include <pthread.h> |
函数原型 | int pthread_mutex_trylock(pthread_mutex_t *mutex) |
函数传入值 | mutex:互斥锁 |
函数返回值 | 成功:0 |
出错:-1 |
pthread_mutex_unlock()函数
函数功能 | 对互斥锁解锁 |
头文件 | #include <pthread.h> |
函数原型 | int pthread_mutex_unlock(pthread_mutex_t *mutex) |
函数传入值 | mutex:互斥锁 |
函数返回值 | 成功:0 |
出错:-1 |
pthread_mutex_destroy()函数
函数功能 | 删除互斥锁 |
头文件 | #include <pthread.h> |
函数原型 | int pthread_mutex_destroy(pthread_mutex_t *mutex) |
函数传入值 | mutex:互斥锁 |
函数返回值 | 成功:0 |
出错:-1 |