色偷偷精品伊人,欧洲久久精品,欧美综合婷婷骚逼,国产AV主播,国产最新探花在线,九色在线视频一区,伊人大交九 欧美,1769亚洲,黄色成人av

240 發(fā)簡信
IP屬地:河北
  • 120
    GPUImage詳細(xì)解析(六)-用視頻做視頻水印

    回顧 之前解析介紹的是GPUImage源碼解析、圖片模糊、視頻濾鏡,明白了GPUImage的強(qiáng)大功能,這次介紹的是兩個視頻的重疊,可以把兩個視頻文件合并,也可以把視頻和錄像結(jié)...

  • 補(bǔ)充一下
    nonatomic ( ARC/MRC )
    1.不對set方法加同步鎖 。
    2.性能好。
    3.線程不安全。

    atomic ( ARC/MRC )
    1.原子屬性就是對生成的 set 方法加互斥鎖 (互斥鎖 是一種同步鎖,

    互斥鎖:如果共享數(shù)據(jù)已經(jīng)有其他線程加鎖了,線程會進(jìn)入休眠狀態(tài)等待鎖。一旦被訪問的資源被解鎖,則等待資源的線程會被喚醒。

    自旋鎖:如果共享數(shù)據(jù)已經(jīng)有其他線程加鎖了,線程會以死循環(huán)的方式等待鎖,一旦被訪問的資源被解鎖,則等待資源的線程會立即執(zhí)行。

    自旋鎖的效率高于互斥鎖 )
    @synchronized(鎖對象) 。
    @synchronized(self) { _delegate = delegate;}
    2.需要消耗系統(tǒng)資源 。
    3.互斥鎖是利用線程同步實現(xiàn)的 , 意在保證同一時間只有一個線程調(diào)用 set 方法 。
    4.其實還有 get 方法 , 要是同時 set 和 get 一起調(diào)用還是會有問題的 . 所以即使用了 atomic 修飾 還是不夠安全 。

    nonatomic 和 atomic 的介紹和區(qū)別
    1. 什么是atomicity(原子性)?
    atomicity(原子性):我把原子性理解成線程對屬性的單一執(zhí)行。
    例如,當(dāng)兩條線程同時執(zhí)行一個屬性的set方法的時候,如果不具有原子性(也就是聲明屬性時使用了nonatimic),那么就可能出現(xiàn)當(dāng)A線程正在改寫某屬性值的時候,B線程也許會突然闖入,把尚未修改好的屬性值讀取出來。發(fā)生這種情況時,線程讀取到的屬性值肯定不對。
    2. 保證atomicity真的就線程安全了嗎?為什么日常聲明都用的是nonatomic呢?
    1.保證atomicity并非也是線程安全的,如果需要保證安全,需要跟深層次的線程鎖定機(jī)制。
    2.使用同步鎖在iOS中開銷比較大,會給程序帶來性能上的問題。
    3. 為什么atomicity也不能保證線程安全?
    例如:當(dāng)使用atomic時,仍然可能出現(xiàn)線程錯誤:當(dāng)線程A進(jìn)行set操作,這時其他線程的get或者set操作會因為等該操作而等待。當(dāng)A線程的set操作結(jié)束后,B線程進(jìn)行set操作,然后當(dāng)A線程需要get操作時,卻獲得了在B線程的值,這就破壞了線程安全,如果有C線程在A線程get操作之前release了該屬性,那么還會導(dǎo)致程序崩潰。所以僅僅使用atomic并不會使得線程安全,我們還是要為線程添加lock來確保線程的安全:smile:

永川市| 当阳市| 沙湾县| 金山区| 广德县| 九龙坡区| 登封市| 阿拉善左旗| 慈溪市| 板桥市| 曲麻莱县| 伊宁县| 德惠市| 阿拉善盟| 客服| 龙江县| 黑河市| 汝阳县| 乌拉特后旗| 朝阳县| 巴彦淖尔市| 南京市| 西和县| 开江县| 保靖县| 井陉县| 玉林市| 隆林| 开原市| 长海县| 应城市| 徐水县| 枝江市| 福清市| 凉城县| 肇东市| 六枝特区| 都江堰市| 华安县| 宁明县| 时尚|