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

首頁 > 編程 > C++ > 正文

C++ 線程(串行 并行 同步 異步)詳解

2020-01-26 14:02:31
字體:
來源:轉載
供稿:網友

C++  線程(串行 并行 同步 異步)詳解

看了很多關于這類的文章,一直沒有總結。不總結的話就會一直糊里糊涂,以下描述都是自己理解的非官方語言,不一定嚴謹,可當作參考。

首先,進程可理解成一個可執行文件的執行過程。在ios app上的話我們可以理解為我們的app的.ipa文件執行過程也即app運行過程。殺掉app進程就殺掉了這個app在系統里運行所占的內存。

線程:線程是進程的最小單位。一個進程里至少有一個主線程。就是那個main thread。非常簡單的app可能只需要一個主線程即UI線程。當然大部分還是會有一些子線程的,比如如果你用了AFNetWorking,你的請求都是開辟了子線程。

關于串行,并行,同步,異步,我還是以下面代碼的方式做個說明。

首先button點擊事件運行在主線程里,先是在主線程里做了打印了一句話,然后創建了一個串行或者并行的隊列,之后連續創建了3個同步或者異步的block任務放入此隊列中,最后再在主線程里打印一句話。

- (IBAction)serialSync:(id)sender { NSLog(@"start log in main thread"]);  dispatch_queue_t myQueue = dispatch_queue_create("myQueue", NULL);  for (NSInteger n = 0; n < 3; n++) {    dispatch_sync(myQueue, ^{      for (NSInteger i = 0; i < 500000000; i++) {        if (i == 0) {          NSLog(@"串行同步任務%ld -> 開始%@",n,[NSThread currentThread]);        }        if (i == 499999999) {          NSLog(@"串行同步任務%ld -> 完成",(long)n);        }      }    });  }  NSLog(@"阻塞我沒有?當前線程%@",[NSThread currentThread]);}- (IBAction)serialAsync:(id)sender {  NSLog(@"start log in main thread"]);  dispatch_queue_t myQueue = dispatch_queue_create("myQueue", NULL);//創建一個串行隊列  for (NSInteger n = 0; n < 3; n++) {    dispatch_async(myQueue, ^{      for (NSInteger i = 0; i < 500000000; i++) {        if (i == 0) {          NSLog(@"串行異步任務%ld -> 開始%@",n,[NSThread currentThread]);        }        if (i == 499999999) {          NSLog(@"串行異步任務%ld -> 完成",(long)n);        }      }    });  }  NSLog(@"阻塞我沒有?當前線程%@",[NSThread currentThread]);}- (IBAction)concurrentSync:(id)sender {  NSLog(@"start log in main thread"]);  dispatch_queue_t myQueue = dispatch_queue_create("myQueue", DISPATCH_QUEUE_CONCURRENT);  for (NSInteger n = 0; n < 3; n++) {    dispatch_sync(myQueue, ^{      for (NSInteger i = 0; i < 500000000; i++) {        if (i == 0) {          NSLog(@"并行同步任務%ld -> 開始%@",(long)n,[NSThread currentThread]);        }        if (i == 499999999) {          NSLog(@"并行同步任務%ld -> 完成",(long)n);        }      }    });  }  NSLog(@"阻塞我沒有?當前線程%@",[NSThread currentThread]);}- (IBAction)concurrentAsync:(id)sender {  NSLog(@"start log in main thread"]);  dispatch_queue_t myQueue = dispatch_queue_create("myQueue", DISPATCH_QUEUE_CONCURRENT);  for (NSInteger n = 0; n < 3; n++) {    dispatch_async(myQueue, ^{      for (NSInteger i = 0; i < 500000000; i++) {        if (i == 0) {          NSLog(@"并行異步任務%ld -> 開始%@",n,[NSThread currentThread]);        }        if (i == 499999999) {          NSLog(@"并行異步任務%ld -> 完成",(long)n);        }      }    });  }  NSLog(@"阻塞我沒有?當前線程%@",[NSThread currentThread]);}

最后的結果如圖:

榪<footer>
<div class=

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片
主站蜘蛛池模板: 乐山市| 章丘市| 淮安市| 佛山市| 高雄县| 汉阴县| 恩施市| 米脂县| 道真| 曲沃县| 庆元县| 布尔津县| 青田县| 安阳县| 涟水县| 桐梓县| 苍梧县| 镇江市| 塔城市| 基隆市| 贡嘎县| 辽中县| 万山特区| 讷河市| 怀宁县| 尼玛县| 双峰县| 洱源县| 绵阳市| 梅州市| 高青县| 桃园市| 连州市| 河间市| 麻城市| 梨树县| 什邡市| 莒南县| 宜宾市| 西贡区| 沙坪坝区|