資源共享
1塊資源可能會被多個線程共享,也就是多個線程可能會訪問同一塊資源
比如多個線程訪問同一個對象、同一個變量、同一個文件
當多個線程訪問同一塊資源時,很容易引發數據錯亂和數據安全問題
一、解決方案
解決方案:使用線程同步技術(同步,就是協同步調,按預定的先后次序進行)
常見的線程同步技術是:加鎖
1、OSSpinLock
OSSpinLock叫做”自旋鎖”,等待鎖的線程會處于忙等(busy-wait)狀態,一直占用著CPU資源
目前已經不再安全,可能會出現優先級反轉問題
如果等待鎖的線程優先級較高,它會一直占用著CPU資源,優先級低的線程就無法釋放鎖
需要導入頭文件#import<libkern/OSAtomic.h>

2、os_unfair_lock
os_unfair_lock用于取代不安全的OSSpinLock,從iOS10開始才支持
從底層調用看,等待os_unfair_lock鎖的線程會處于休眠狀態,并非忙等
需要導入頭文件#import<os/lock.h>
3、pthread_mutex
mutex叫做”互斥鎖”,等待鎖的線程會處于休眠狀態
需要導入頭文件#import<pthread.h>
pthread_mutex 主站蜘蛛池模板: 五莲县| 保靖县| 桓仁| 澎湖县| 米脂县| 柘荣县| 佛冈县| 若尔盖县| 隆林| 河西区| 屯留县| 江华| 新兴县| 五常市| 大邑县| 宁化县| 吉木乃县| 禹城市| 岑溪市| 崇文区| 黄山市| 年辖:市辖区| 佛学| 安阳市| 琼海市| 开封市| 庐江县| 武乡县| 宝兴县| 吉水县| 宣城市| 贵南县| 珠海市| 天祝| 山阳县| 枣庄市| 齐齐哈尔市| 万盛区| 铁岭县| 张北县| 册亨县|