成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

多線程進程fork出來的進程是單線程還是多線程?

開發 前端
一個多線程進程fork出來的進程是多線程還是單線程的?先說結論:是單線程的。

本文轉載自微信公眾號【編程珠璣】(shouwangxiansheng)。

一個多線程進程fork出來的進程是多線程還是單線程的?先說結論:是單線程的。

[[405231]]

實踐

口說無憑,我們先寫段代碼實踐驗證一下。

  1. // multiThread.cc 
  2. #include <unistd.h> 
  3. #include <atomic> 
  4. #include <chrono> 
  5. #include <iostream> 
  6. #include <thread> 
  7. std::atomic<bool> start{false}; 
  8. void threadfunc() { 
  9.   while (!start) { 
  10.     std::this_thread::sleep_for(std::chrono::seconds(1)); 
  11.   } 
  12.   while (start) { 
  13.     std::this_thread::sleep_for(std::chrono::seconds(1)); 
  14.     std::cout << "thread func,pid:" << getpid() << std::endl
  15.   } 
  16. int main() { 
  17.   std::thread t1(threadfunc); 
  18.   // daemon(0, 1); // 后臺執行 
  19.   start.store(true); 
  20.   t1.join();  // 等待threadfunc運行結束 
  21.   return 0; 

編譯運行:

  1. $ g++ -o multiThread multiThread.cc -lphtread 
  2. $ ./multiThread 
  3. thread func,pid:9901 
  4. thread func,pid:9901 
  5. thread func,pid:9901 

結果正常,線程不斷循環打印信息。那如果啟動線程后,再fork呢?即將代碼中daemon的相關行的注釋去掉,再編譯運行。

運行這個例子,我們會發現,程序立馬退出了,沒有打印我們預想的內容。

為什么

為什么會這樣呢?實際上,fork的時候會拷貝父進程的數據內容,即寫時復制,但是,像啟動運行的線程,是不會被“復制”過去的。也就是說,從父進程fork出來的子進程,將會是單線程的。這也就給了我們一些啟示:

如果在API中需要啟動工作線程,則工作線程需要在daemon化之后再啟動。

怎么理解呢?比如說,你設計了某一個功能,你的功能是需要啟動一個線程來進程工作,那么你在使用的時候,就必須要特別注意這種fork進程的場景,即需要在fork之后啟動線程,才能保證線程能夠正常啟動并工作。

 

責任編輯:趙寧寧 來源: 編程珠璣
相關推薦

2020-11-09 09:33:37

多線程

2024-09-27 11:51:33

Redis多線程單線程

2019-02-26 11:15:25

進程多線程多進程

2023-08-17 14:12:17

2019-10-29 20:13:43

Java技術程序員

2013-12-02 17:33:20

Linux進程多線程

2022-05-26 08:31:41

線程Java線程與進程

2021-01-28 11:17:49

Python爬蟲單線程

2023-12-01 08:18:24

Redis網絡

2020-09-23 13:37:25

Redis6.0

2025-06-17 00:22:00

2022-07-18 13:59:43

Redis單線程進程

2020-11-17 10:20:53

Redis多線程單線程

2022-03-09 17:01:32

Python多線程多進程

2023-12-13 09:56:13

?多進程多線程協程

2018-01-11 08:24:45

服務器模型詳解

2025-04-24 08:15:00

Redis單線程線程

2009-07-10 09:05:20

SwingWorker

2019-06-03 09:13:11

線程進程多線程

2012-06-20 14:07:28

多線程架構單線程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕一区二区三区在线视频 | 欧美日韩激情 | 99精品99久久久久久宅男 | 99精品久久 | 成人国产在线视频 | 午夜精品久久久久久久久久久久久 | 亚洲欧美中文日韩在线v日本 | 免费h视频| 91精品国产91久久久久久丝袜 | 国产欧美日韩精品一区二区三区 | 亚洲天堂久久新 | 99久久精品免费看国产四区 | 欧美日韩成人一区二区 | 国产高清视频一区二区 | 久久免费精品 | 日本不卡一区二区三区 | 亚洲国产精久久久久久久 | 精品一区在线 | 日本特黄a级高清免费大片 特黄色一级毛片 | 三区四区在线观看 | 国内精品久久久久久久 | 欧美一区二区免费 | 午夜精品网站 | 国产91丝袜在线播放 | 午夜精品一区二区三区在线视 | 日韩精品视频在线 | 自拍偷拍亚洲视频 | 日本二区在线观看 | 精品综合网 | 精品在线一区 | 观看av | 在线国产一区二区 | 亚洲人成人一区二区在线观看 | 亚洲精品一区中文字幕 | 欧美视频区 | www国产成人免费观看视频,深夜成人网 | 久久狠狠| 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 福利久久 | 精品日韩一区 | 日本中出视频 |