国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

nonatomic和atomic原子屬性和非原子屬性

2019-11-06 09:55:55
字體:
供稿:網(wǎng)友

#import "ViewController.h"

@interface ViewController () /* 鎖 / @PRoperty(nonatomic,strong)NSObject * lockObjc; //nonatomic : 非原子屬性 /* 原子屬性 atomic : 原子屬性 如果不寫關(guān)鍵字 那么默認就是 原子屬性 - 多線程寫入屬性時,保證同一時間只有一個線程能夠執(zhí)行寫入操作 - 單(線程)寫多(線程)讀線程技術(shù),同樣有可能出現(xiàn)”臟數(shù)據(jù)”,重新讀一下

線程安全 在多個線程進行讀寫操作的時候,仍然能夠保證數(shù)據(jù)正確

UI線程(主線程) : 共同一個約定,所有更新UI的操作都在主線程上執(zhí)行! 原因:幾乎所有的UIKit 都不是線程安全的!”取舍”為了性能!

*/

@property(atomic,strong)NSObject * myAtomic;

@end

@implementation ViewController

/* 一下代碼模擬 Atomic 僅供參考!

OC 中定義屬性,通常會聲明一個 _成員變量 (這個功能是Xcode 的功能!) 如果你同時重寫了屬性的 getter & setter 方法, _成員變量,就不會自動生成!

@synthesize 合成指令, 在Xcode 4.5 之前用得非常多!Xcode 4.5 之前屬性不會自動生成 _成員變量 */

@synthesize myAtomic = _myAtomic; -(NSObject *)myAtomic { return _myAtomic; }

/** 實際上,原子屬性內(nèi)部就有一把鎖!! 自旋鎖 自旋鎖 & 互斥鎖

共同點 都能保證同一個時間點就只有一條線程訪問!

不同點 互斥鎖:如果發(fā)現(xiàn)有其他線程正在執(zhí)行鎖定的代碼,線程就會進入睡眠狀態(tài),等待其他線程執(zhí)行完畢,打開鎖之后,線程就會被喚醒! 自旋鎖:如果發(fā)現(xiàn)有其他線程正在執(zhí)行鎖定的代碼,線程就會用死循環(huán)的方式,一直等待鎖定代碼執(zhí)行完畢! 自旋鎖更適合執(zhí)行非常短的代碼!

無論什么鎖,都是以”性能”作為代價來保證”安全” */

-(void)setMyAtomic:(NSObject *)myAtomic { @synchronized (self) { _myAtomic = myAtomic; } }

@end


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 西峡县| 宣威市| 漾濞| 南京市| 思南县| 凯里市| 怀宁县| 武强县| 孝昌县| 龙南县| 松原市| 张家川| 和政县| 庄浪县| 方山县| 阳城县| 东港市| 眉山市| 高尔夫| 大田县| 安泽县| 科技| 边坝县| 铜梁县| 延庆县| 柳江县| 乌拉特中旗| 贵定县| 阿拉善右旗| 桓台县| 贡嘎县| 临洮县| 延川县| 遵义市| 舟曲县| 通海县| 常山县| 霞浦县| 辉南县| 潜江市| 修文县|