Posix Threads编程
教材
《Programming with POSIX Threads》 by David R. Butenhof, ADDISON-WESLEY, 1997
《POSIX多线程程序设计》 于磊 曾刚 译,中国电力出版社,2003
Chapter 1
pthread_create()
创建一个线程,第3个参数为线程函数。
pthread_detach()
指示Pthreads当线程终结时回收线程资源。
pthread_exit()
终结调用线程。
pthread_self()
返回调用线程的标识,一般用法:
status = pthread_detach (pthread_self());
Chapter 2
pthread_join()
阻塞调用者,直到指定的线程终止。
Chapter 3
PTHREAD_MUTEX_INITIALIZER
初始化mutex的宏,用于静态初始化。用这个宏静态初始化的mutex,不需要销毁。
pthread_mutex_init()
pthread_mutex_destroy()
用于动态初始化和销毁mutex。
int pthread_mutex_lock()
int pthread_mutex_trylock()
int pthread_mutex_unlock()
mutex的使用方法很简单,用pthread_mutex_lock()
或者 pthread_mutex_trylock()
加锁,处理共享数据,然后调用pthread_mutex_unlock()
解锁。
如果mutex已经被别的线程锁定了,那么pthread_mutex_lock()
讲导致调用线程阻塞。
如果mutex已被锁定,那么pthread_mutex_trylock()
将返回错误状态(EBUSY)
,而不是
阻塞。
条件变量
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
int pthread_cond_init()
int pthread_cond_destroy()
用于创建和销毁条件变量。
int pthread_cond_wait()
int pthread_cond_timedwait()
等待条件变量。每个条件变量都必须与一个特定的mutex相关联。当一个线程等待条件变量 时,mutex必须是锁定的。等待操作在阻塞线程之前,会解锁mutex,返回之前会重新锁定 mutex。
Chapter 4
三种主要的线程编程模型:
- Pipeline
- Work crew
- Client/Server
Chapter 5
pthread_once_t once_control = PTHREAD_ONCE_INIT;
int pthread_once (pthread_once_t *once_control, void (*init_routine) (void));
完成做一次而且只做一次的任务。