成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

異步編程到底在說啥?

開發(fā) 前端
如果是在單核系統(tǒng)下,CPU會不斷在處理文件線程和A函數(shù)線程間切換,看上去這兩個線程就好像在同時運(yùn)行,但如果是在多核系統(tǒng)下,這兩個線程可以真正的并行起來。

[[432994]]

大家好,我是小風(fēng)哥。

有的同學(xué)可能注意到了最近更新頻率有點(diǎn)慢,除了工作外小風(fēng)哥也確實(shí)在忙些其它事情,這里先賣個關(guān)子,過段時間會和大家匯報(bào)的圖片。

之前很多同學(xué)在微信上問能不能講講異步編程是怎么一回事兒,今天就和大家簡單聊一聊這個話題。

我們以函數(shù)調(diào)用為例,假設(shè)有這樣的代碼:

  1. void B() { 
  2.   lines = read(filename); 
  3.   sum(lines); 
  4.  
  5. void A() { 
  6.   ... 
  7.   B(); 
  8.   ... 

代碼非常簡單,B函數(shù)讀取一個文件,文件里保存的是一行行數(shù)據(jù),然后加和,A函數(shù)中的某個位置調(diào)用B函數(shù)。

此時,我們說這是同步調(diào)用,因?yàn)锳函數(shù)后續(xù)代碼必須等待B函數(shù)處理完文件才能繼續(xù)執(zhí)行。

隨著業(yè)務(wù)不斷發(fā)展,B函數(shù)處理的文件越來越龐大,此時處理一次文件耗時2小時,假設(shè)A函數(shù)后還有一行重要的代碼:

  1. void A() { 
  2.   ... 
  3.   B(); 
  4.   something_important(); 
  5.   ... 

這就意味著調(diào)用B函數(shù)后需要等待2個小時才能執(zhí)行到something_important這行代碼,而something_important函數(shù)對時間要求非常苛刻,該怎樣改進(jìn)呢?

其實(shí)很簡單,我們可以在B函數(shù)內(nèi)部創(chuàng)建一個線程,在線程中處理文件:

  1. void handle_file() { 
  2.   lines = read(filename); 
  3.   sum(lines); 
  4.  
  5. void B() { 
  6.   thread t(handle_file); 
  7.  
  8. void A() { 
  9.   ... 
  10.   B(); 
  11.   something_important(); 
  12.   ... 

這樣B函數(shù)被調(diào)用后創(chuàng)建完線程即可立即返回,緊接著開始執(zhí)行something_important這行代碼,CPU在執(zhí)行something_important這行代碼時可能文件還沒有開始處理,這樣函數(shù)A不再依賴于文件處理,這時我們說函數(shù)B函數(shù)就是異步調(diào)用的,函數(shù)A異步于文件處理。

如果是在單核系統(tǒng)下,CPU會不斷在處理文件線程和A函數(shù)線程間切換,看上去這兩個線程就好像在同時運(yùn)行,但如果是在多核系統(tǒng)下,這兩個線程可以真正的并行起來。

在編程語境下,異步往往和線程進(jìn)程等相關(guān)。

最后舉一個例子。

同步就好比你排隊(duì)去自助售票機(jī)取電影票(話說小風(fēng)哥已經(jīng)很久很久沒有去電影院看電影了),你必須排隊(duì)等待前一個人取完電影票才能到你,你不能在前一個取票的過程中取自己的票,這時我們說取電影票時你和前一個人是同步的。

而異步就好比去吃大餐,你在座位上看菜單點(diǎn)菜,其它人也可以點(diǎn)菜,你不需要等待其它人吃完飯才能下單,這時我們說你點(diǎn)菜和其它人吃飯是異步的。

本文轉(zhuǎn)載自微信公眾號「碼農(nóng)的荒島求生」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系碼農(nóng)的荒島求生公眾號。

 

責(zé)任編輯:武曉燕 來源: 碼農(nóng)的荒島求生
相關(guān)推薦

2021-01-27 05:25:44

Go語言函數(shù)

2020-11-27 19:08:51

AI 數(shù)據(jù)人工智能

2022-04-19 15:33:53

數(shù)據(jù)模型

2024-11-05 09:32:47

2017-03-16 14:31:11

2015-06-30 14:33:52

物聯(lián)網(wǎng)

2015-09-02 09:56:33

大數(shù)據(jù)

2016-04-05 10:21:25

大數(shù)據(jù)元數(shù)據(jù)數(shù)據(jù)分析

2023-06-11 17:02:24

數(shù)字化轉(zhuǎn)型數(shù)字經(jīng)濟(jì)

2019-07-17 10:10:34

Netty版本Event

2013-04-01 15:38:54

異步編程異步編程模型

2020-11-02 12:47:56

性能優(yōu)化

2021-11-16 23:07:59

手機(jī)性能技術(shù)

2010-08-09 09:09:36

Linux與BSD的區(qū)

2020-03-09 16:43:06

腳本語言瀏覽器JavaScript

2019-05-28 09:19:57

5G華為美國

2020-10-08 14:45:36

Windows XPWindows微軟

2023-09-12 16:36:39

操作系統(tǒng)CPU周期性

2018-04-26 11:05:55

分布式系統(tǒng)集中式系統(tǒng)數(shù)據(jù)處理

2015-08-26 08:41:19

物聯(lián)網(wǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美精选一区二区 | 91网站在线观看视频 | 久久久久久国产精品三区 | 国产999精品久久久 精品三级在线观看 | 久久国内精品 | 亚洲成人精品 | 精品一区二区视频 | 中文字幕一区二区三区不卡在线 | 深夜福利影院 | av在线电影网站 | 国产精品久久久久久久毛片 | av天空 | 国产精品国产成人国产三级 | 日韩亚洲一区二区 | 一道本视频 | 特黄小视频 | 欧美成人高清 | 欧洲一区二区视频 | 一级做a爰片性色毛片16美国 | 亚洲精品一区av在线播放 | 日韩二区三区 | 国内久久精品 | 成人影院av | 黄色av网站免费看 | 亚洲高清一区二区三区 | 色在线免费视频 | 超碰8| 国产精品日本一区二区不卡视频 | 午夜影晥| 亚洲视频观看 | 欧美日韩视频 | 日韩小视频在线 | 欧美高清视频 | 五月婷六月丁香 | 蜜桃在线播放 | 国产成人av免费看 | 精品国产乱码久久久久久88av | 日韩一区二区免费视频 | 在线看免费 | 日韩在线一区二区 | 久久视频精品 |