白話文解釋什麼是線程線程池同步異步套接字

什麼是線程,創建10個線程?創建100個線程有什麼區別?
簡單的說,一個線程處理一個任務,創建10個線程,就等於叫來10個人,同時做10件事一樣,同理,創建100個線程,就等於叫來100個人,同時幹100件事,有人可能要問,那爲什麼不一次性創建很多很多的線程,那樣,程序處理速度不就飛快了嗎? 其實這裏也要考慮內存負荷,線程多了帶來的線程安全問題,都是要考慮的,所以,一次創建少一點,沒壞處
一般的話,我們寫的程序都是單線程,程序同時只能處理一件事情。

啥是線程池?聽起來好高大上啊?什麼意思呢?
易語言多線程支持庫好像沒有線程池,至少我還沒看到,但是已經有易友寫了相關的線程池模塊,可以調用
那線程池到底什麼意思呢?其實很簡單,就是實現重用線程,比如,一個銀行,開通10個窗口,同時一次處理10個人的業務,然後後面人接着排隊,誰先辦完業務,下個人補上去
線程池的概念和這個差不多, 創建一個容納30個線程的線程池,然後一次性添加100個線程任務進去,然後電腦每30個線程分爲一批,先處理30個線程,哪個線程處理完了,後面排隊的線程繼續補上去

經常聽人說,同步處理,異步處理,到底是個啥意思?
我剛學易語言的時候,下載了個遠程控制源碼, 就有人說什麼屏幕異步傳輸什麼的,文件同步傳輸什麼的
其實也很好理解
同步的意思:比如現在程序要處理100件事情,那如果是同步的話,就一個一個來,排着隊來,程序不容易出錯,但是速度慢了
異步的意思:異步顧名思義吧,互不干擾,誰也不知道誰先處理完,大家各幹各的。比如現在程序要處理100件事情,這100件事情同時一起幹,誰先處理完,誰就撤

啥是TCP協議啊?
呵呵,聽上去好像挺高大上的,但是很好理解,TCP網絡協議,現在應該算主流吧,因爲他不容易丟包
爲什麼不容易丟包呢?因爲TCP每發送給別人一段數據,它都要等別人的反饋, 發一遍,問一遍,發一遍,問一遍


TCP傳輸流程大概是這樣的:
TCP:發給對方一段數據
TCP問:你收到了?
對方:收到了!
TCP:再發下一段數據

TCP問:你收到了?
對方:沒收到!
TCP說:好的,沒關係,我再發一遍

TCP再問:你收到了?
對方:收到了!
TCP:好的,我再發下一段數據
......
用TCP協議的好處就是不容易丟包,但是弊端就是傳輸速度慢

啥是UDP協議啊?
有很長一段時間,我不知道這個UDP到底是個啥? 呵呵,其實很簡單的,UDP協議一般用於視頻聊天軟件,遊戲裏面看到其他玩家移動啊,其他玩家聊天的數據,在網絡間傳輸,基本上用的都是UDP協議, 某個玩家發了一句話,然後發到服務器,服務器再用UDP協議轉發給所有的玩家, 服務器只管發,你們玩家能不能收到這條數據,服務器是不管的,就算你沒收到,服務器也不會給你補發,所以,我們有時候在QQ聊天,視頻卡住了,然後人又動了,中間卡住的時候就是UDP傳輸的時候丟包了

UDP傳輸流程大概是這樣的:
UDP:發給對方一段數據,不管你收沒收到
UDP:再接着發給對方一段數據,不管你收沒收到
UDP:再接着發給對方一段數據,不管你收沒收到
UDP:再接着發給對方一段數據,不管你收沒收到
UDP:再接着發給對方一段數據,不管你收沒收到
UDP:再接着發給對方一段數據,不管你收沒收到
UDP:一直髮,不管你收沒收到,我只管發就行了
......
用UDP的好處就是傳輸速度快了,但是丟包率也上去了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章