成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

poll函數(shù)編程教學(xué) 在非阻塞模式上怎么知道recv接收數(shù)據(jù)完成?

在非阻塞模式上怎么知道recv接收數(shù)據(jù)完成?以linux下的tcp socket編程為例:阻塞是指recv/read時(shí),如果socket接收緩沖區(qū)有數(shù)據(jù),我會(huì)一直保持清醒,直到有數(shù)據(jù)來(lái)了,我才讀完。在

在非阻塞模式上怎么知道recv接收數(shù)據(jù)完成?

以linux下的tcp socket編程為例:阻塞是指recv/read時(shí),如果socket接收緩沖區(qū)有數(shù)據(jù),我會(huì)一直保持清醒,直到有數(shù)據(jù)來(lái)了,我才讀完。

在發(fā)送/寫的時(shí)候,如果發(fā)送緩沖區(qū)滿了,沒(méi)有空間繼續(xù)發(fā)送,我就睡覺(jué),磨蹭,直到發(fā)送緩沖區(qū)騰出足夠的空間讓我把所有的數(shù)據(jù)都塞進(jìn)發(fā)送緩沖區(qū)。

(當(dāng)然,如果你通過(guò)setsockopt設(shè)置了讀寫超時(shí),超時(shí)到期后仍然會(huì)返回-1和EAGAIN,不會(huì)等待睡眠。)

非阻塞是指在recv/read時(shí),如果接收緩沖區(qū)有數(shù)據(jù)并且我讀完了,如果沒(méi)有數(shù)據(jù),我會(huì)直接帶著返回的-1和EGAIN離開,絕不會(huì)休眠等待任何延遲。

寫/發(fā)送時(shí),如果發(fā)送緩沖區(qū)有足夠的空間,立即將數(shù)據(jù)放入發(fā)送緩沖區(qū),然后離開。如果發(fā)送緩沖區(qū)已滿,空間不足,直接用返回的-1和EAGAIN離開。至于IO多路復(fù)用,首先要理解的是操作系統(tǒng)為你提供了一個(gè)功能。當(dāng)你的一個(gè)套接字接收緩沖區(qū)有數(shù)據(jù)要讀或者發(fā)送緩沖區(qū)有空間要寫時(shí),它會(huì)給你一個(gè)通知。

這樣在配合非阻塞socket使用的時(shí)候,我只會(huì)在系統(tǒng)通知我可以讀取哪個(gè)描述符的時(shí)候進(jìn)行讀取操作,這樣可以保證我每次讀取的時(shí)候都能讀取到有效數(shù)據(jù),除了return -1和EAGAIN我什么都不會(huì)做。

寫操作是相似的。

操作系統(tǒng)的這個(gè)功能被select/poll/epoll等系統(tǒng)調(diào)用函數(shù)使用,可以同時(shí)監(jiān)控多個(gè)描述符的讀寫準(zhǔn)備情況,使得多個(gè)描述符的I/O操作可以在一個(gè)線程中完成,稱為I/O復(fù)用。,其中 "再利用和指的是同一線程的重用。至于事件驅(qū)動(dòng),其實(shí)是I/O復(fù)用的另一種叫法。至于異步同步,我們?cè)趌inux下常見的網(wǎng)絡(luò)編程模型大多是同步io。以讀操作為例,本質(zhì)上用戶需要調(diào)用re。Ad/recv在處理業(yè)務(wù)邏輯之前從內(nèi)核緩沖區(qū)讀取數(shù)據(jù)。

異步io意味著內(nèi)核已經(jīng)讀取了數(shù)據(jù),用戶直接處理邏輯。

異步IO一般使用linux下的aio庫(kù)。

java初學(xué)推薦書籍有哪些?

排名不分先后

Effective Java

了解過(guò)Java的人應(yīng)該或多或少聽過(guò)這本書,堪稱經(jīng)典。書中主要列舉了一些知識(shí)點(diǎn),然后分別對(duì)這些知識(shí)點(diǎn)進(jìn)行闡述。內(nèi)容相當(dāng)深入,推薦有基礎(chǔ)的人閱讀。

Thinking with Java 4

Java思維被譽(yù)為Java圣經(jīng)。不管你處于什么階段,每次看都能有所收獲。所以,對(duì)于初學(xué)者來(lái)說(shuō),這本書有褒有貶。你自己想想。

Java并發(fā)編程實(shí)踐

外國(guó)人寫的書,這是翻譯版,原著《Java Concurrency in Practice》,堪稱并發(fā)中的經(jīng)典之作。翻譯的也很好,書內(nèi)容偏理論,基本知識(shí)點(diǎn)都能概括。當(dāng)然這本書還是要適合有一點(diǎn)并發(fā)基礎(chǔ)的人,零基礎(chǔ)的看起來(lái)會(huì)有點(diǎn)吃力。這本書可以大量閱讀。一遍又一遍,你不看一遍也會(huì)有新的理解。

對(duì)Java虛擬機(jī)的深刻理解

這本書也很經(jīng)典,作者是國(guó)內(nèi)的,在市場(chǎng)泛濫的今天,也算是上品了。書中對(duì)JVM進(jìn)行了詳細(xì)而深刻的講解,是學(xué)習(xí)JVM原理的必備書籍。

頭部?jī)?yōu)先設(shè)計(jì)模式

Head first系列教材,看起來(lái)特別輕松,圖文并茂,通俗易懂,適合初學(xué)者選擇。

重構(gòu)——改進(jìn)現(xiàn)有代碼的設(shè)計(jì)

書中給出了70多個(gè)可行的重構(gòu),每個(gè)重構(gòu)都介紹了一個(gè)經(jīng)過(guò)驗(yàn)證的代碼轉(zhuǎn)換技術(shù)的動(dòng)機(jī)和技術(shù)。本書中提出的重構(gòu)標(biāo)準(zhǔn)將幫助您一次一小步地修改代碼,從而降低開發(fā)過(guò)程中的風(fēng)險(xiǎn)。

MySQL技術(shù)內(nèi)幕

本文從源代碼的角度深入分析了InnoDB的體系結(jié)構(gòu)、實(shí)現(xiàn)原理和工作機(jī)制,并給出了大量的最佳實(shí)踐,可以幫助您系統(tǒng)深入地掌握InnoDB,更重要的是可以為您設(shè)計(jì)和管理高性能、高可用的數(shù)據(jù)庫(kù)系統(tǒng)提供優(yōu)秀的指導(dǎo)。

另外,我可以和大家分享一下這幾年收集的關(guān)于Java三個(gè)方面的書籍。大概有幾個(gè)G 你可以通過(guò)回復(fù) "Java書籍和雜志在后臺(tái)。如果對(duì)你有幫助,請(qǐng)點(diǎn)擊喜歡。