变态重口极致另类在线-波多久久夜色精品国产-波多野结衣在线观看一区-波多野结衣在线观看一区二区-污污的网站免费阅读-污污视频网址

東坡下載:內容最豐富最安全的下載站!

幫助|文件類型庫|最新更新|下載分類|排行榜

編程相關破解相關編程工具反編譯安裝制作程序源碼軟件補丁數據庫Visual Studiovc++visualbasicdreamweaver

首頁編程開發編程相關 → Go并發編程實戰第二版 pdf 完整版

Go并發編程實戰第二版

Go并發編程實戰第二版pdf 完整版

  • 大。85.6M
  • 語言:中文
  • 平臺:WinAll
  • 更新:2017-07-06 14:45
  • 等級:
  • 類型:編程相關
  • 網站:暫無
  • 授權:免費軟件
  • 廠商:
  • 產地:國產軟件
好用好玩 50%(0)
坑爹 坑爹 50%(0)
軟件介紹軟件截圖相關軟件軟件教程網友評論下載地址

GO并發編程實戰第二版,這本書與第1版差別是因為真本書掌握了書中的大部分內容而秒殺了幾個甚至十幾個Go程序員的職位,從章節結構和內容都有大幅調整。

這本書與第1版最大的差別有3個

1.緊跟Go的1.8版本。

在這個行當的各位都應該知道,學技術就要學最新的技術。即使暫時用不上,也要在思維和思路上與技術前沿同步。更何況對于Go語言來說,版本間的向后兼容做得如此之好,我們更有理由跟上最新版本,享受語言本身帶來的紅利(更豐富的庫、更高的性能,等等)。

2.章節結構和內容都有大幅調整。

為了更合理、更科學地為大家呈現Go語言的獨特魅力和內在奧妙,我和編輯們共同確定了新的大綱和結構。在第2版里,基礎編程講得少了(更易速查),并發編程講得更多了(更加深入和細致)。

3.示例代碼得到全面且徹底的修訂。

第1版的示例代碼無論從編排、設計和實現水準上都已經落后了,且無法體現Go1.8的最新變化。在本次改版中,我完全改變了代碼包的編排方式,可以讓大家快速地找到每章每節的實例。同時,我幾乎對所有中大型的示例都進行了改造,也幾乎改進了所有示例代碼文件。

目錄

GO并發編程實戰簡介

現在,讓我們再次聚焦到sync代碼包。除了我們介紹過的互斥鎖、讀寫鎖和條件變量,該代碼包還為我們提供了幾個非常有用的API。其中一個比較有特色的就是結構體類型sync.Once和它的Do方法。

與代表鎖的結構體類型sync.Mutex和sync.RWMutex一樣,sync.Once也是開箱即用的。換句話說,我們僅需對它進行簡單的聲明即可使用,就像這樣:

如上所示,我們聲明了一個名為once的sync.Once類型的變量之后,立刻就可以調用它的指針方法Do了。

該類型的方法Do可以接受一個無參數、無結果的函數值作為其參數。該方法一旦被調用,就會調用被作為參數傳入的那個函數。從這一點看,該方法的功能實在是稀松平常。不過,重點并不在這里。

我們對一個sync.Once類型值的指針方法Do的有效調用次數永遠會是1。也就是說,無論我們調用這個方法多少次,也無論我們在多次調用時傳遞給它的參數值是否相同,都僅有第一次調用是有效的。無論怎樣,只有我們第一次調用該方法時傳遞給它的那個函數會被執行。請看下面的示例:

在onceDo函數中,我們利用for語句連續三次異步的調用once變量的Do方法。這三次調用傳給Do方法的參數值都是相同的,都是變量fi所代表的匿名函數值。這個函數值的功能是先改變num變量的值再向非緩沖的sign通道發送一個true。變量num的值可以表示出once的Do方法被有效調用的次數,而通道sign則被用來傳遞代表了fi函數被執行完畢的信號。請注意,為了能夠精確的表達出fi函數是在哪一次(或哪幾次)調用once.Do方法的時候被執行的,我們在這里使用了閉包。在每次迭代之初,我們賦給fi變量的函數值都是對變量f所代表的函數值進行閉包的一個結果值。我們使用變量ii作為f函數中的自由變量,并在閉包的過程中把for代碼塊中的變量i的值加1后再與該自由變量綁定在一起。這樣就生成了為當次迭代專門定制的函數fi。每次迭代中生成的fi函數在被執行的時候都會修改變量num的值。這些新的值不會出現重復,并且非常有助于我們倒推出所有的曾賦給自由變量的ii的值。這樣,我們就可以知道哪個(或哪些)fi函數被真正的執行了。

函數onceDo中的第二條for語句的作用是等待之前的那三個異步調用的完成。讀者可能已經發現,這兩條for語句的預設迭代次數是一致的。在第二條for語句中,我們使用了select語句,并且為針對sign通道的接收操作設定了超時時間(100毫秒)。這是為了當永遠無法從sign通道中接收元素值的時候不至于造成永久的阻塞。select語句中的每個case在被執行時都會打印出相應的內容。這有助于我們觀察程序的實際運行情況。最后,我們還會打印出num變量的值。據此,我們可以判斷在前面幾次傳遞給Do方法的fi是否都被執行了。

在執行onceDo函數之后,我們會看到如下打印內容:

上面的打印內容表明,在成功從sign通道接收了一個元素值之后,出現了兩次接收操作超時的情況。我們不用考慮在對sign通道的接收操作開始之時匿名函數fi還沒有被執行完畢的情況。因為100毫秒的時間已經足夠執行它很多很多次的了。因此,這兩次接收操作超時應該是當時沒有正在為此等待的對sign通道的發送操作導致的(注意,sign是一個非緩沖通道)。綜上所述,我們可以初步判斷,傳遞給once.Do方法的匿名函數fi只被執行了一次。并且,這僅有一次的執行的對象是在我們第一次調用該方法時傳遞給它的那個fi函數。

依據最后一行打印內容,我們可以證實上述判斷。num變量的值為2意味著它只被修改了一次,并且是在自由變量ii為1的時候被修改的。這就可以證實,只有在for循環的第一次迭代時傳遞給once.Do方法的那個fi函數被執行了。這也符合sync.Once類型及其指針方法Do的語義。

請注意,這個僅被執行一次的限制只是針對單個sync.Once類型值來說的。換句話說,每個sync.Once類型值的指針方法Do都可以被有效的調用一次。

這個sync.Once類型的典型應用場景就是執行僅需執行一次的任務。例如,數據庫連接池的初始化任務。又例如,一些心跳檢測之類的實時監測任務。等等。

在一探sync.Once類型及其指針方法Do的內部實現之后,我們會有所發現:它們所提供的功能正是由前面講到的互斥鎖和原子操作來實現的。這個實現并不復雜。其使用的技巧包括衛述語句、雙重檢查鎖定,以及對共享標記的原子讀寫操作。在熟知了本章講述的這些同步工具之后,我們是否也能輕易設計出這樣簡單、有效的解決方案呢?

總之,sync.Once類型及其方法實現了“只會執行一次”的語義。我們在需要完成只需或只能執行一次的任務的時候應該首先想到它。

PC官方
安卓官方手機版
IOS官方手機版

Go并發編程實戰第二版截圖

下載地址

Go并發編程實戰第二版 pdf 完整版

熱門評論
最新評論
第 1 樓 美國CZ88.NET 網友 客人 發表于: 2017/10/10 2:30:06
不是第二版的

支持( 0 ) 蓋樓(回復)

昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字數: 0/500 (您的評論需要經過審核才能顯示)

編輯推薦

報錯

請簡要描述您遇到的錯誤,我們將盡快予以修正。

轉帖到論壇
輪壇轉帖HTML方式

輪壇轉帖UBB方式

主站蜘蛛池模板: 久久久久久久99精品免费观看 | 欧美成人黄色 | 国产成人影院在线观看 | 欧美日韩精品在线观看 | 国产麻豆视频免费观看 | 草草影院www色欧美极品 | 久久女同互慰一区二区三区 | 蜜桃视频成人免费版在线 | 欧美三级又粗又硬 | 中文字幕不卡一区 | 国产在线观看黄色 | 色迷迷网免费站视频在线观看 | 欧美刺激性大交 | 亚洲 欧美 日韩在线一区 | 在线看片成人免费视频 | 国产 日韩 欧美 在线 | 韩国日本三级在线播放 | 久久久久国产视频 | 欧美一区二区视频高清转区 | 欧美日韩资源 | 成人免费网站在线观看 | 最新国产三级在线观看不卡 | 午夜高清免费观看视频 | 久久香蕉网 | 亚洲欧美日韩国产专区一区 | 亚洲精品国精品久久99热 | 久久一区二区精品 | 中文国产在线观看 | 激情综合久久 | 国产在线观看免费视频软件 | 2018狠狠干 | 你懂的在线视频网站 | 欧美人禽 | 看全免费的一级毛片 | 亚洲激情视频 | 色黄网站成年女人色毛片 | 乱人伦精品一区二区 | 久久人人爽人人爽人人 | 欧美一级做一a做片性视频 欧美一级做性受 | 视频在线成人 | 精品国产免费一区二区 |