iOS多執行緒 02 多執行緒的安全問題

2022-05-05 19:45:08 字數 1000 閱讀 6610

1塊資源可能會被多個執行緒共享,也就是多個執行緒可能會訪問同一塊資源

比如多個執行緒訪問同乙個物件、同乙個變數、同乙個檔案

蘋果不建議使用互斥鎖,因為太消耗效能

(1) 互斥鎖使用格式

@synchronized(鎖物件)

注意:鎖定1份**只用1把鎖,用多把鎖是無效的

(2) 互斥鎖的優缺點

優點: 能有效防止因多執行緒搶奪資源造成的資料安全問題

缺點: 需要消耗大量的cpu資源

(3) 互斥鎖的使用前提: 多條執行緒搶奪同一塊資源

(4) 相關專業術語: 執行緒同步

執行緒同步的意思是: 多條執行緒按順序地執行任務

互斥鎖,就是使用了執行緒同步技術

//

互斥鎖,要在搶奪的共享資源讀寫範圍上加鎖

//增加互斥鎖之後,併發的整體效能「會下降」

//互斥鎖對效能影響是相當嚴重的,代價是高昂的!

//在使用互斥鎖的時候,一定注意,儘量減少鎖定的**範圍

@synchronized(self) {

原子屬性 atomic 是蘋果的乙個多執行緒技術, 任何時候, 只允許乙個執行緒對該屬性進行寫入操作, 可以允許多個執行緒讀取屬性數值!

在定義屬性時, 預設都是 atomic 屬性

原子屬性的效能, 比互斥鎖高, 但是仍然代價很高! 不建議使用!

oc在定義屬性時有nonatomic和atomic兩種選擇

atomic:原子屬性,為setter方法加鎖(預設就是atomic)

nonatomic:非原子屬性,不會為setter方法加鎖

(1) nonatomic和atomic對比

atomic:執行緒安全,需要消耗大量的資源

nonatomic:非執行緒安全,適合記憶體小的移動裝置

(2) ios開發的建議

所有屬性都宣告為nonatomic

盡量避免多執行緒搶奪同一塊資源

盡量將加鎖、資源搶奪的業務邏輯交給伺服器端處理,減小移動客戶端的壓力

iOS開發多執行緒 執行緒安全

資源共享 1塊資源可能會被多個執行緒共享,也就是多個執行緒可能會訪問同一塊資源 比如多個執行緒訪問同乙個物件 同乙個變數 同乙個檔案 當多個執行緒訪問同一塊資源時,很容易引發資料錯亂和資料安全問題 示例一 示例二 問題 import viewcontroller.h inte ce viewcont...

多執行緒02

什麼是使用者態和核心態 在作業系統裡面,作業系統的核心佔一部分記憶體,使用者應用程式佔一部分記憶體,核心即可以訪問自身的記憶體,也可以訪問使用者應用程式的記憶體,但是使用者應用程式只能訪問自身的記憶體,不能訪問核心的記憶體 執行緒的啟動 關閉 切換都要依賴於核心態 voliate 保證執行緒可見性 ...

(多執行緒)多執行緒的併發安全

多執行緒併發操作同乙個資源 同步鎖 多執行緒操作的鎖必須唯一 必須搞清楚 哪些 需要同步?那些在操作共享資源的 只要包含非讀的操作,或者根據共享資源進行條件判斷的,就需要同步!同步 塊解決 package com.gc.thread 多執行緒操作共享資源 併發 執行緒安全問題 同步 鎖 相對而言效能...