linux進程和線程的clone建立

來源:互聯網
上載者:User


linux進程和線程的clone建立 Java代碼   www.2cto.com  [b]Linux下進程和線程的建立都是通過clone實現的. clone函數功能強大,帶了眾多參數,  clone可以讓你有選擇性的繼承父進程的資源,你可以選擇想vfork一樣和父進程  共用一個虛存空間,從而創造的是線程,你也可以不和父進程共用,你甚至可以選  擇創造出來的進程和父進程不再是父子關係,而是 兄弟關係[/b]   pthread_create是基於clone實現的, 建立出來的其實是進程, 但這些進程與父進程共用很多東西, 共用的東西都不用複製給子進程, 從而節省很多開銷, 因此,這些子進程也叫輕量級進程(light-weight process)  在linux中線程就是輕量級的進程 fork後, 子進程複製哪些東西 一句話總結, 就是所有 writeable 的東西都會複製.包括: 堆,棧, 資料區段, 未初始化資料區段, 開啟的檔案描述符, 訊號安裝過的handler, 共用庫, ipc(共用記憶體,訊息佇列,訊號量) 注意未決訊號不會繼承過來, 新進程會重設它的未決訊號鏈  子進程和父進程共用哪些東西 一句話總結, 就是所有 read-only 的東西都不用複製, 父子進程共用, 包括: 本文段和字串常量  哪些東西, 子進程不會從父進程繼承 進程id, 各種鎖(記憶體鎖,檔案鎖), 定時器, 未決訊號   在作業系統中。一個使用者級的線程如果對應一個系統級線程,就可以充分利用linux多核的特性。 但是在早期的linux版本中,linux使用者級進程的多個線程對應一個系統級的進程,不能充分利用作業系統的特性! 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.