pthread函数的使用

2015-12-21  本文已影响619人  zjunchao

pthread函数的使用

互斥锁

在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象

pthread_mutex_init

该函数用于C函数的多线程编程中,互斥锁的初始化。

pthread_mutex_lock

pthread_mutex_lock() 返回时,改互斥锁已经别锁定。线程调用该函数让互斥锁上锁,如果该互斥锁已经被另一个线程锁定和拥有,则调用线程将阻塞,直到该互斥锁变为可用为止。

pthread_mutex_unlock

与pthread_mutex_lock成对存在。释放互斥锁

pthread_mutex_destroy

互斥锁销毁函数在执行成功后返回 0,否则返回错误码。

条件变量

Linux下C编程的条件变量:

pthread_cond_init

函数pthread_cond_init()被用来初始化一个条件变量。

pthread_cond_wait

等待条件有两种方式:条件等待pthread_cond_wait()和计时等待pthread_cond_timedwait(),其中计时等待方式如果在给定时刻前条件没有满足,则返回ETIMEOUT,结束等待.

无论哪种等待方式,都必须和一个互斥锁配合,以防止多个线程同时请求pthread_cond_wait()的竞争条件。在调用pthread_cond_wait()前必须由本线程加锁(pthread_mutex_lock()),mutex保持锁定状态,在线程挂起进入等待前解锁。

pthread_cond_wait必须放在pthread_mutex_lock和pthread_mutex_unlock之间,因为他要根据共享变量的状态来决定是否要等待,而为了不永远等待下去所以必须要在lock/unlock队中

pthread_cond_signal

pthread_cond_signal函数的作用是发送一个信号给另外一个正在处于阻塞等待状态的线程,使其脱离阻塞状态,继续执行.如果没有线程处在阻塞等待状态,pthread_cond_signal也会成功返回。

thread_cond_signal建议放在pthread_mutex_lockh和pthread_mutex_unlock之间

pthread_cond_destroy

注销一个条件变量需要调用pthread_cond_destroy(),只有在没有线程在该条件变量上等待的时候,才能注销这个条件变量,否则返回失败

上一篇 下一篇

猜你喜欢

热点阅读