线程同步的各种方法汇总

Vanessa ·
更新时间:2024-09-20
· 701 次阅读

 

目录

互斥锁

读写锁

自旋锁

条件变量

屏障

互斥锁

两种状态:

(1)加锁,pthread_mutex_lock() 。

(2)不加锁,pthread_mutex_unlock() 。

读写锁

三种状态:

(1)读模式下的加锁状态,多个线程可以同时占有该锁,pthread_rwlock_rdlock() 。

(2)写模式下的加锁状态,只有一个线程占有该锁,pthread_rwlock_wrlock() 。

(3)不加锁状态,pthread_rwlock_unlock() 。

自旋锁

特有性质:线程在获取锁之前一直处于忙等状态(自旋)。

两种状态:

(1)加锁,pthread_spin_lock() 。

(2)不加锁,pthread_spin_unlock() 。

条件变量

1、功能:为线程提供了一种回合的场所。

2、常用函数:pthread_cond_wait(pthread_cond_t,pthread_mutex_t) 。

mutex 的作用是对 cond 进行保护,因为函数的功能是把调用函数放到等待 cond 变化的线程列表中,如果在放置的过程中,没有对条件进行加锁,那么条件变化了,调用线程是无法感知的,从而导致了未知的错误。

屏障

功能:允许每个线程等待,知道所有的合作线程都到达某一点,然后再继续往下执行。

栗子:pthread_join() 。

 

(SAW:Game Over!)


作者:Ruo_Xiao



线程同步 方法 方法汇总 线程

需要 登录 后方可回复, 如果你还没有账号请 注册新账号