用计算机语言理解如何多线程工作用计算机语言理解如何多线程工作的过程
平時(shí)跟一些朋友/同事聊天的時(shí)候會(huì)聽(tīng)到這樣一些聲音:
”工作量很大,一天到晚都在忙“
”我現(xiàn)在在忙xxx,要等我忙完了才能xxx“
”一天到晚雜事太多,都把自己淹沒(méi)了“
一個(gè)現(xiàn)象背后隱藏的原因是復(fù)雜的,通常難以做單一歸因解釋,即使從時(shí)間管理的角度切入都可以找到很多的理論和解釋。其中“線性工作”是導(dǎo)致這種現(xiàn)象的一種典型原因,那怎樣做到”多線程工作“呢?
計(jì)算機(jī)在多任務(wù)調(diào)度時(shí)所追求的是“一段時(shí)間內(nèi)”的最大吞吐量和“合理的”響應(yīng)速度;
多任務(wù)處理是以性能開(kāi)銷(xiāo)為代價(jià)的,個(gè)別任務(wù)的響應(yīng)速度變慢和上下文切換的大量成本最為明顯。因此多任務(wù)調(diào)度需要綜合平衡任務(wù)的時(shí)長(zhǎng)、優(yōu)先級(jí)、是否可中斷、任務(wù)類型(CPU耗時(shí)在任務(wù)中的占比)這些主要因素。在日常拿到一件事情的時(shí)候,我們可以參考CPU的做法:
關(guān)于任務(wù)時(shí)長(zhǎng)與優(yōu)先級(jí)的思考
首先需要對(duì)這件事情的耗時(shí)和優(yōu)先級(jí)做一個(gè)判斷,盡量按優(yōu)先級(jí)優(yōu)先處理重要的事情; 隨著時(shí)間的推移,能夠定期動(dòng)態(tài)重新評(píng)估調(diào)整優(yōu)先級(jí),避免部分任務(wù)得不到及時(shí)響應(yīng); 為了保證盡量大的吞吐量和速度,必要時(shí)可以拋棄部分任務(wù),但要有回落兜底機(jī)制,避免系統(tǒng)異常(例如協(xié)調(diào)給其他同學(xué)來(lái)完成,節(jié)省出自己的時(shí)間,但保證任務(wù)的完成)
關(guān)于是否可中斷的思考
計(jì)算機(jī)上下文切換代價(jià)很高,人切換思考和任務(wù)同樣也有轉(zhuǎn)化損耗。轉(zhuǎn)換損耗的形成原因主要有兩種,一是任務(wù)A留下的認(rèn)知慣性,也就是之前已經(jīng)習(xí)慣了任務(wù)A的認(rèn)知情境、反應(yīng)方式,這個(gè)慣性會(huì)對(duì)完成任務(wù)B造成干擾;二是做B的時(shí)候需要對(duì)B進(jìn)行認(rèn)知重構(gòu),重新回憶起B(yǎng)的相關(guān)背景和信息,這個(gè)重構(gòu)也需要時(shí)間,而且可能不完整。因此拿到一個(gè)任務(wù)的時(shí)候首先要對(duì)任務(wù)做有效的剖析非常重要,區(qū)分哪些是允許中斷的部分,哪些是不能被中斷的部分。盡量避免打斷“不能被中斷的部分“任務(wù),而在”可中斷部分“進(jìn)行并發(fā)處理。
關(guān)于任務(wù)類型的思考
類似于DMA,拿到一件事情要區(qū)分哪些部分是必須要自己完成的(CPU任務(wù)),哪些是可以委派給其他人完成的(I/O任務(wù)),把可以別人協(xié)助完成的任務(wù)委派給別人完成,并通過(guò)中斷(時(shí)間對(duì)齊、預(yù)期管理等)來(lái)對(duì)資源Ready進(jìn)行響應(yīng)做后續(xù)處理。通過(guò)將部分任務(wù)委派給其他人,可以提升自己處理任務(wù)的速度和吞吐量。
總結(jié)
以上是生活随笔為你收集整理的用计算机语言理解如何多线程工作用计算机语言理解如何多线程工作的过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 无法初始化java类_myeclip运行
- 下一篇: 出现蓝屏不要慌蓝屏出现的问题