android多線程,一直是一個麻煩的事情,要掌握它的本質,我們需要搞清楚一個問題,linux多線程的本質。
我們這篇文章,來讨論以下的議程:
了解linux的曆程,了解android的異步任務機制,了解android的多步任務。
說到linux的多線程,我們要比較windows與linux的多線程的模型。
windows線程———線程與程序多對多模型,線程的排程都在核内。
作業系統——作業系統在的視線系統,部分linux的線程是一對一,一對多的模式,線程排程在核外。
這是windows程序,windows程序的模型如下:
通過這張圖,我們能夠精确的看到在kernel中,windows已經定義了一些程序管理類和線程的模型,在類庫的層面,你隻需要來打通這個線程程序的管道,兒在使用者層我們隻需要盡情的使用線程池的線程。
對于linux的線程的知識,我們知道的linux的設計的王道,就是一個簡略既是美的原則,利納科斯沒有考慮多線程的。他的程序,線程的示意圖如下:
我們可以看到這個linux沒有所謂的線0程管理,隻有一個輕量級的線程管理,所謂輕量級的線程的管理,隻不過是為減少程序的間切花,實作線程中資源的共享。linux的程序隻能夠在類庫的層面來實作了,是以linux的程序與線程的定義是一對一的作用。
總而言之言而總之,linux的程序是使用者态實作的,windows的程序是核心态的實作的。
對于linux的程序與windows的程序,我們能夠通過一個手中模行來實作,windows就好比,動手指頭是神經系統(核心)控制的,高效,資源開銷少,linux動手指頭是外人(使用者)控制的,低效,資源少。
有了這個分析,預知android的多線程的知識,請聽下回分解。
好好學習,天天向上。