Linux和windows下多線程的區別

        Linux和windows對於多線程的多線程的實現是不同的。總體來說,Linux系統下,是用戶級的多線程,也就是說內核是並不清楚多線程的存在的;而windows下則是核心級別的線程,內核可以直接對於線程進行管理。

        具體來說,Linux只是用一個叫做“運行時系統”完成對於多線程的管控。Linux沒有一個直接對於多線程可以管理的數據結構,他只能對於多線程上一層的進程,使用PCB記錄進程的信息,從而對於進程加以管控。也就是說,Linux內核的角度,線程就是進程,沒有專門的線程調度算法,這個線程只是可以和別的進程共享資源而已。

                                

        但是對於windows操作系統來說,內核可以直接管控線程,並嚮應用程序提供api接口。線程的切換是以內核作爲支持的,線程是調度的基本單位。我們看windows下的多線程示意圖如下:

                               

        我們能看到每一個線程也能站有一部分獨有的資源,這也就是內核獨自管理每一個線程的好處。

        下面一張圖是Linux和windows對於多線程操作的一些函數對比

        

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