iOS 遞歸鎖


遞歸鎖

原理:遞歸鎖也是通過 pthread_mutex_lock 函數來實現,在函數內部會判斷鎖的類型。NSRecursiveLock 與 NSLock 的區別在於內部封裝的 pthread_mutex_t 對象的類型不同,前者的類型為 PTHREAD_MUTEX_RECURSIVE

運用場景:循環(多張圖片循環上傳),遞歸

 

//遞歸鎖實例化

    NSRecursiveLock *lock = [[NSRecursiveLock alloc] init];

    static void (^RecursiveMethod)(NSInteger);

    //  同一線程可多次加鎖,不會造成死鎖

    RecursiveMethod = ^(NSInteger value){

        [lock lock];//一進來就要開始加鎖

        [NetWorkManager requestWithMethod:POST Url:url Parameters:paraDic success:^(id responseObject) {

            [self reuestForSuccess];

  //一旦數據獲取成功就要解鎖 不然會造成死鎖

              [lock unlock];

        } requestRrror:^(id requestRrror) {

            //條件沒有達到,開始循環操作

            if(value > 0){

                RecursiveMethod(value-1);//必須-1  循環

            }

            if(value == 0){

            //條件 如果 == 0 代表循環的次數條件已經達到 可以做別的操作

            }

            //失敗后也要解鎖

                [lock unlock];

        }];

             //記得解鎖

              [lock unlock];

    };

    //設置遞歸鎖循環次數  自定義

       RecursiveMethod(5);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM