摘要:讀碼農(nóng)翻身一什么是線程線程屬于進(jìn)程,與該進(jìn)程中的其它線程共享該進(jìn)程的資源變量指令等。因?yàn)樘幱诰€程池中的線程實(shí)際上是自由狀態(tài),處于等待分配任務(wù)狀態(tài)。而前面講到的三個(gè)狀態(tài)是針對帶有任務(wù)的線程而言。
讀《碼農(nóng)翻身》(一) 什么是線程?
線程屬于進(jìn)程,與該進(jìn)程中的其它線程共享該進(jìn)程的資源(變量、指令等)。
線程可以理解為計(jì)算機(jī)中處理任務(wù)的最小單位。
線程有三個(gè)狀態(tài): 就緒、運(yùn)行、等待。理論上,線程在被創(chuàng)建并執(zhí)行完分配給它的任務(wù)后就會(huì)被銷毀。所以線程只有這三個(gè)狀態(tài)。
所以,線程池中的線程不算在內(nèi)。因?yàn)樘幱诰€程池中的線程實(shí)際上是自由狀態(tài),處于等待分配任務(wù)狀態(tài)。而前面講到的三個(gè)狀態(tài)是針對帶有任務(wù)的線程而言。
就緒:拿到任務(wù)后準(zhǔn)備去執(zhí)行;
運(yùn)行:獲取CPU使用權(quán)后,CPU執(zhí)行線程中的指令;
等待:碰到耗時(shí)的I/O任務(wù)時(shí),線程會(huì)先讓出CPU,處于等待I/O結(jié)果返回的狀態(tài);
TCP/IP三次握手:
客戶端向服務(wù)端發(fā)送建立連接的請求;
服務(wù)端收到客戶端請求建立連接的請求后,向客戶端發(fā)送同意建立連接的請求;
客戶端收到服務(wù)端發(fā)送的同意連接請求后,向服務(wù)端發(fā)送收到信息的確認(rèn);
經(jīng)過三次握手后,客戶端就會(huì)開始向服務(wù)端傳送數(shù)據(jù)。這三次握手的目的是為了在客戶端和服務(wù)端之間建立一個(gè)信息傳送通道,確認(rèn)雙方的收發(fā)信息能力是OK的。實(shí)際上,經(jīng)過第二次握手后,已經(jīng)可以斷定雙發(fā)的收發(fā)信息能力OK,第三次握手只是為了消除服務(wù)端對自己的發(fā)信能力和客戶端的收信能力的擔(dān)憂而已。
在TCP/IP連接中,較大的數(shù)據(jù)會(huì)拆分成較小的數(shù)據(jù)塊分開傳送。每個(gè)數(shù)據(jù)塊都有相應(yīng)的序號,如果某個(gè)數(shù)據(jù)快傳輸失敗,則會(huì)再重新傳送一次。在接收端,只有在成功接收到前一個(gè)序號的數(shù)據(jù)塊,才會(huì)對客戶端發(fā)送收到當(dāng)前數(shù)據(jù)的確認(rèn)信息。否則,即使收到了也不會(huì)發(fā)送確認(rèn)信息,而是等待接收前面的數(shù)據(jù)塊。
CPUCPU是一個(gè)思考速度飛快但是記憶能力非常脆落的大腦。它的時(shí)間單位是納秒,一個(gè)時(shí)間單位內(nèi)就能執(zhí)行一個(gè)指令。
CPU可以看作一個(gè)工人,一個(gè)個(gè)的進(jìn)程可以看作不同的工作臺(tái),工作臺(tái)上存儲(chǔ)著進(jìn)程被分配的資源。 不同的工作臺(tái)處理不同的任務(wù),CPU在不同的進(jìn)程間切換,就好比這個(gè)工人在不同的工作臺(tái)之間來回變動(dòng)。
CPU在工作臺(tái)處理任務(wù)的時(shí)候, 實(shí)際上就是在執(zhí)行程序員編寫的程序。這里的程序?qū)嶋H上就是由:順序、分支、循環(huán)組成的任務(wù)流程。
我們都知道,CPU執(zhí)行的程序,都來自內(nèi)存。但是內(nèi)存的讀取速度遠(yuǎn)遠(yuǎn)落后于CPU,為此對于那些在近期內(nèi)經(jīng)常用到的數(shù)據(jù)會(huì)存在CPU的緩存中。CPU中的寄存器便是用來做這個(gè)的。進(jìn)一步提高效率,CPU實(shí)際結(jié)構(gòu)體系遠(yuǎn)比這個(gè)復(fù)雜。CPU還存在L1,L2和L3三級緩存。
多任務(wù)系統(tǒng)實(shí)際生活中,我們都知道CPU可以同時(shí)處理大多個(gè)任務(wù)。這實(shí)際上是內(nèi)存中被裝入多個(gè)程序,CPU在這些程序之間來回切換執(zhí)行。因?yàn)槌绦蛟趦?nèi)存中存儲(chǔ)的位置不同,所以CPU執(zhí)行每個(gè)程序中指令時(shí),都需要獲取指令在內(nèi)存中的實(shí)際地址。獲取實(shí)際地址的方法分為兩種:
靜態(tài)地址定位:在指令進(jìn)入CPU前,將地址提前計(jì)算好一并交給CPU;CPU拿到后直接執(zhí)行即可;
動(dòng)態(tài)地址定位: 在CPU運(yùn)行指令之前,通過基址+指令地址來獲取指令在內(nèi)存中的實(shí)際位置;
以上三點(diǎn)僅僅書中很少的一部分內(nèi)容啦,實(shí)際上在我看過這段內(nèi)容中,還有更多的計(jì)算機(jī)科學(xué)相關(guān)的設(shè)計(jì)思想,等待有合適 的時(shí)機(jī)在補(bǔ)回來。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/62049.html
摘要:原來這是之父寫的一篇戰(zhàn)斗檄文,里邊充滿了對面向?qū)ο蟮呐小]想到支持函數(shù)式編程的居然給自己出了一道面向?qū)ο蟮念},大為驚訝。拼手速了我的圖書策劃人說這個(gè)應(yīng)該是今年最后一次粉絲福利,錯(cuò)過了再等一年也未必有了 又是周末,編程語言三巨頭Java, Lisp 和C語言照例在Hello World咖...
摘要:看完了編碼,我會(huì)推薦我的學(xué)生再深入一步,看一看深入理解計(jì)算機(jī)系統(tǒng),它把操作系統(tǒng),計(jì)算機(jī)組成原理,數(shù)字電路,編譯原理,網(wǎng)絡(luò),計(jì)算機(jī)體系結(jié)構(gòu)等程序員需要了解的核心知識(shí)匯集在一起,讓你迅速的打下扎實(shí)的基礎(chǔ)。 假如我是計(jì)算機(jī)系老師, 我會(huì)先讓我的學(xué)生先去讀一下《編碼:隱匿在計(jì)算機(jī)軟硬件背后的語言》這本書, 搞明白一個(gè)個(gè)簡單的邏輯門電路到底是怎么組成計(jì)算機(jī)的, 弄清楚計(jì)算機(jī)軟件語言和硬件之間到底...
摘要:看起來沒有集合框架,線程,等那么耀眼,但它可是很多框架的基礎(chǔ)啊回復(fù)反射查看相關(guān)文章,先把基礎(chǔ)學(xué)會(huì),后面的得用到它。 回頭看看, 我進(jìn)入Java 領(lǐng)域已經(jīng)快15個(gè)年頭了, 雖然學(xué)的也一般, 但是分享下我的心得,估計(jì)也能幫大家少走點(diǎn)彎路。[入門]我在2001年之前是C/C++陣營, 有C和面向?qū)ο蟮幕A(chǔ), 后來轉(zhuǎn)到Java ,發(fā)現(xiàn)沒有指針的Java真是好簡單, 另外Java 的類庫好用的讓...
閱讀 824·2021-09-07 09:58
閱讀 2682·2021-08-31 09:42
閱讀 2855·2019-08-30 14:18
閱讀 3086·2019-08-30 14:08
閱讀 1831·2019-08-30 12:57
閱讀 2759·2019-08-26 13:31
閱讀 1299·2019-08-26 11:58
閱讀 1052·2019-08-23 18:06