1.1线程的创建
#include <pthread.h>
int
pthread_create(
pthread_t * thread,
const pthread_attr_t * attr,
void* (*start_routine)(void*),
void * arg);
参数1:指向pthread_t结构类型的指针,利用该结构与线程交互。
参数2:用于指定该参数可能具有的属性。
参数3:指示线程在哪个函数(函数名称start_routine)中运行。
参数4:传递给线程开始执行的函数的参数。
1.2线程的完成
int pthread_join(pthread_t thread, void **value_ptr);
参数1:指定要等待的线程。
参数2:得到的返回值。
线程的返回值不要返回指针,并让它指向线程调用栈上分配的东西。线程函数内的变量分配在栈中,返回后栈会释放该内存。
1.3锁
临界区需要通过锁来保护。
int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex);
int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);
如果在调用pthread_mutex_lock时没有其它线程保持有锁,线程将获取该锁并进入临界区。如果另一线程保持该锁,那么尝试获取该锁的线程将不会从该调用返回,直到获得该锁。函数三初始化互斥变量。
1.4条件变量
线程之间的交互信号。
int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);
int pthread_cond_signal(pthread_cond_t *cond);
第一个函数使调用线程进入休眠状态,等待其他线程发出信号,同时会让调用者睡眠时释放锁。
网友评论