10个常用的线程处理函数
1. pthread_create(): 创建新线程
pthread_create()函数是C语言的POSIX线程库中用于创建新线程的函数。它的语法如下:
int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr,void *(*start_rtn)(void*),void *restrict arg);
该函数会创建一个新的线程,并将它放在进程的地址空间中。它需要四个参数,分别是指向线程标识符的指针,线程的属性,指向线程函数的指针和函数参数。
2. pthread_exit(): 退出线程
pthread_exit()函数是C语言的POSIX线程库中用于退出线程的函数。它的语法如下:
void pthread_exit(void *value_ptr);
该函数会将线程退出,并将其返回值传递给调用者。value_ptr参数指向线程返回值的指针。
3. pthread_join(): 等待线程结束
pthread_join()函数是C语言的POSIX线程库中用于等待线程结束的函数。它的语法如下:
int pthread_join(pthread_t thread, void **retval);
该函数会等待指定线程结束并收回资源。retval参数指向线程返回值的指针。
4. pthread_mutex_init(): 初始化互斥锁
pthread_mutex_init()函数是C语言的POSIX线程库中用于初始化互斥锁的函数。它的语法如下:
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);
该函数需要两个参数,分别是指向互斥锁结构体的指针和指向互斥锁属性的指针。
5. pthread_mutex_lock(): 加锁
pthread_mutex_lock()函数是C语言的POSIX线程库中用于对互斥锁加锁的函数。它的语法如下:
int pthread_mutex_lock(pthread_mutex_t *mutex);
该函数会试图将互斥锁锁住。
6. pthread_mutex_unlock(): 解锁
pthread_mutex_unlock()函数是C语言的POSIX线程库中用于对互斥锁解锁的函数。它的语法如下:
int pthread_mutex_unlock(pthread_mutex_t *mutex);
该函数会将互斥锁解锁,使其他线程能够访问共享资源。
7. sem_init(): 初始化信号量
sem_init()函数是C语言的POSIX线程库中用于初始化信号量的函数。它的语法如下:
int sem_init(sem_t *sem, int pshared, unsigned int value);
该函数需要三个参数,分别是指向信号量结构体的指针,进程间共享的标志和信号量的初始值。
8. sem_wait(): 等待信号量
sem_wait()函数是C语言的POSIX线程库中用于等待信号量的函数。它的语法如下:
int sem_wait(sem_t *sem);
该函数会等待信号量值减少,如果信号量为0则等待。
9. sem_post(): 增加信号量
sem_post()函数是C语言的POSIX线程库中用于增加信号量的函数。它的语法如下:
int sem_post(sem_t *sem);
该函数会增加信号量的值。
10. pthread_cond_wait(): 等待条件变量
pthread_cond_wait()函数是C语言的POSIX线程库中用于等待条件变量的函数。它的语法如下:
int pthread_cond_wait(pthread_cond_t *restrict cond,pthread_mutex_t *restrict mutex);
该函数会等待条件变量满足,如果条件不满足则pthread_cond_wait()将把该线程放入挂起状态。函数返回时,互斥锁再次锁住。
