在一個頁面可能會有請求多個接口的情況,而接口的請求是異步的,為了能保證一個頁面數據的同步處理,針對多個異步線程的處理建議使用信號量機制,在異步線程開始前將信號量加1,線程執行完成后再把信號量減1,然后通過線程的匯總,在信號量為0的時候執行頁面數據的處理操作。
信號量的加減操作有兩種:
第一種:
自定義一個信號量dispatch_semaphore_t,一般默認初始化的信號量值是0.
信號量加1:
dispatch_semaphore_signal(semaphore);
信號量減1:
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
第二種:
創建線程組dispatch_group_t,對線程組進行信號量的加減操作
信號量加1:
dispatch_group_enter(group);
信號量減1:
dispatch_group_leave(group);