進程與線程

 進程與線程的概念

進程和線程都是由操作系統所體會的程序運行的基本單元,系統利用該基本單元實現系統對應用的併發性。一個程序至少有一個進程,一個進程至少有一個線程。

進程是具有一定獨立功能的程序關於某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位。

線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。一個線程可以創建和撤銷另一個線程;同一個進程中的多個線程之間可以併發執行。

     進程與線程的區別

進程和線程的主要差別在於它們是不同的操作系統資源管理方式:

1、進程有獨立的地址空間,一個進程崩潰後,在保護模式下不會對其它進程產生影響;

2、線程只是一個進程中的不同執行路徑。

3、線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等於整個進程死掉,所以多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。但對於一些要求同時進行並且又要共享某些變量的併發操作,只能用線程,不能用進程。

即:線程不能夠單獨執行,它必須運行在處於活動狀態的應用程序進程中,由應用程序提供多個線程執行控制,因此可以定義線程是程序內部的具有併發性的順序代碼流。

 

     線程使用注意事項

    畫圖限制

目前的系統不支持多個線程同時畫圖,即:只能一個線程(主應用進程也是一個線程)畫圖。1、如果主進程有畫圖操作,線程不能進行畫圖操作,如果需要畫圖,則在線程中啓動timertimer在主進程中完成畫圖;

2、如果主進程沒有任何畫圖操作,則可以將畫圖全部放在一個線程中完成;

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