當前位置:編程學習大全網 - 熱門推薦 - 淺談linux 多線程編程和 windows 多線程編程的異同

淺談linux 多線程編程和 windows 多線程編程的異同

linux下線程的實現,linux的線程編程有兩個庫pthread和pth,對於pthread的實現是內核方式的實現,每個線程在kernel中都有task結構與之對應,也就是說用ps命令行是可以看見多個線程,線程的調度也是由內核中的schedule進行的。

再來看看Windows的多線程,Windows NT和Windows95是壹個搶先型多任務、多線程操作系統。因為它使用搶先型的多任務,所以它擁有與UNIX同樣平滑的處理和進程獨立。多線程就更進壹步。壹個獨立的程序默認是使用壹個線程,不過它可以將自己分解為幾個獨立的線程來執行,例如,其中的壹個線程可以發送壹個文件到打印機,而另壹個可以響應用戶的輸入。這個簡單的程序設計修改可以明顯減少用戶等待的時間,讓用戶無需擔心長時間的計算、重繪屏幕、文件讀寫等帶來的不便。

多線程還可以讓妳從許多高端的多處理器NT機器中得到好處。例如,妳購買了壹個高級的RISC機器,可以使用多達10個CPU芯片,但在開始的時候妳只購買了壹個CPU。妳寫了壹個簡單的Mandelbrot set程序,妳發現需要15秒的時間來重新繪制Mandelbrot set的畫面。

那麽,Windows平臺的線程和類Unix平臺(包括Linux)的進程的區別是什麽呢?

熟悉WIN32編程的人壹定知道,WIN32的進程管理方式與UNIX上有著很大區別,在UNIX裏,只有進程的概念,但在WIN32裏卻還有壹個“線程”的概念,那麽UNIX和WIN32在這裏究竟有著什麽區別呢?

UNIX裏的fork是七十年代UNIX早期的開發者經過長期在理論和實踐上的艱苦探索後取得的成果,壹方面,它使操作系統在進程管理上付出了最小的代價,另壹方面,又為程序員提供了壹個簡潔明了的多進程方法。

WIN32裏的進程/線程是繼承自OS/2的。在WIN32裏,“進程”是指壹個程序,而“線程”是壹個“進程”裏的壹個執行“線索”。從核心上講,WIN32的多進程與UNIX並無多大的區別,在WIN32裏的線程才相當於UNIX的進程,是壹個實際正在執行的代碼。但是,WIN32裏同壹個進程裏各個線程之間是***享數據段的。這才是與UNIX的進程最大的不同。

對於多任務系統,***享數據區是必要的,但也是壹個容易引起混亂的問題,在WIN32下,壹個程序員很容易忘記線程之間的數據是***享的這壹情況,壹個線程修改過壹個變量後,另壹個線程卻又修改了它,結果引起程序出問題。但在UNIX下,由於變量本來並不***享,而由程序員來顯式地指定要***享的數據,使程序變得更清晰與安全。

  • 上一篇:戴爾外星人筆記本售後保修打什麽電話
  • 下一篇:韓劇拜托小姐分集劇情介紹 拜托小姐劇情介紹
  • copyright 2024編程學習大全網