第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于ios GCD global_queue

關于ios GCD global_queue

慕尼黑8549860 2019-04-08 11:18:47
我有個函數是將數組存儲到本地文件中去。準備dispatch_async到global_queue中執(zhí)行。如果該函數在極短的時間內執(zhí)行多次,會不會出現多個任務同時操作該本地文件的情況,這樣子做是否安全?如果不安全的話,用什么方法更好?求大神指教
查看完整描述

2 回答

?
holdtom

TA貢獻1805條經驗 獲得超10個贊

globalqueue是異步隊列。LZ的操作可能會造成某一時刻進行同時操作文件,導致數據異常。
換句話說對于你的操作不是線程安全的。解決方法有兩個
1.使用NSUserDefault來做。但是NSUserDefault有位數限制。
2.自己可以創(chuàng)建一個串行隊列然后把然后自己的操作丟到隊列里面。
#defineSYNCGCDQUEUE"COM.CONEBOY.APP.GCD.SYNCGCDQUEUE"
@interfaceKKBaseGCDQueue:NSObject
/**
*獲取一個自定義的全局同步隊列
*
*@return返回全局同步隊列
*/
+(dispatch_queue_t)shareSyncGCDQueue;
@end
@implementationKKBaseGCDQueue
+(dispatch_queue_t)shareSyncGCDQueue
{
staticdispatch_queue_tbaseSyncQueue=nil;
staticdispatch_once_tcreateSyncBaseQueue;
dispatch_once(&createSyncBaseQueue,^{
baseSyncQueue=dispatch_queue_create(SYNCGCDQUEUE,NULL);
});
returnbaseSyncQueue;
}
@end
//使用
-(void)writeFiles{
dispatch_sync([KKBaseGCDQueueshareSyncGCDQueue],^{
NSLog(@"blk0");
dispatch_async(dispatch_get_main_queue(),^{
//updateUI
NSLog(@"main_queue---blk0");
});
});
}
                            
查看完整回答
反對 回復 2019-04-08
  • 2 回答
  • 0 關注
  • 548 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號