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

Shell逐行處理文本求和,我人傻了...

開發 前端
為什么會這樣呢?實際上,我們在《如何使用fork創建進程》中就提到過,fork的時候會拷貝父進程的數據內容,即寫時復制,但是,像啟動運行的線程,是不會被“復制”過去的。

本文轉載自微信公眾號「編程珠璣」,作者守望先生。轉載本文請聯系編程珠璣公眾號。

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

實踐

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

  1. // 來源:公眾號【編程珠璣】 
  2. // 作者:守望先生 
  3. // multiThread.cc 
  4. #include <unistd.h> 
  5. #include <atomic> 
  6. #include <chrono> 
  7. #include <iostream> 
  8. #include <thread> 
  9. std::atomic<bool> start{false}; 
  10. void threadfunc() { 
  11.   while (!start) { 
  12.     std::this_thread::sleep_for(std::chrono::seconds(1)); 
  13.   } 
  14.   while (start) { 
  15.     std::this_thread::sleep_for(std::chrono::seconds(1)); 
  16.     std::cout << "thread func,pid:" << getpid() << std::endl; 
  17.   } 
  18. int main() { 
  19.   std::thread t1(threadfunc); 
  20.   // daemon(0, 1); // 后臺執行 
  21.   start.store(true); 
  22.   t1.join();  // 等待threadfunc運行結束 
  23.   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的相關行的注釋去掉,再編譯運行。

在《如何讓程序真正地后臺運行?》中我們知道,daemon實際上做了進程的fork。

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

為什么

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

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

 

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

 

責任編輯:武曉燕 來源: 編程珠璣
相關推薦

2021-06-07 12:10:14

Shell逐行處理

2021-06-22 09:32:40

Linuxshell命令

2021-08-20 10:46:25

Shell腳本文件Linux

2021-04-21 08:03:34

腳本Shell讀取

2017-03-02 18:10:20

LinuxShell命令

2016-03-30 11:16:33

2024-09-12 17:39:27

2021-09-10 16:30:29

LinuxShell文本

2024-01-07 16:46:19

FiberHTTPWeb

2019-10-14 11:31:51

工具代碼開發

2024-08-12 09:43:42

2020-11-21 19:04:33

技術開發指標

2013-07-16 16:37:12

91百度

2013-08-30 10:25:22

Shell主機監控

2025-06-25 07:08:09

grepsedawk

2021-03-28 08:57:57

Python 文本數據

2020-12-23 11:08:10

Python代碼文本

2018-12-28 10:45:08

Linux文本行命令

2011-04-14 14:37:06

職場

2013-06-03 11:28:05

shell命令
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产乱码久久久久久丨区2区 | 天天干天天干 | 国产午夜精品一区二区三区嫩草 | 欧美一区二区三区在线观看 | 日韩视频免费在线 | 97影院2| 精品欧美一区二区在线观看视频 | 欧美日韩一区二区三区在线观看 | 精品国产免费人成在线观看 | 欧美中文一区 | 国产欧美综合在线 | 成人小视频在线观看 | 久久一二三区 | 亚洲视频一区在线观看 | 96国产精品久久久久aⅴ四区 | 国产精品国产a级 | 久久精品视频网站 | 欧美一区二区在线观看 | 国产在线中文 | 免费国产一区二区 | 免费黄色的视频 | 免费视频一区二区 | 四虎海外 | 乱一性一乱一交一视频a∨ 色爱av | 国产成人99久久亚洲综合精品 | 免费观看一级视频 | 999国产视频 | 欧美精品久久 | 欧美日韩在线高清 | 正在播放一区二区 | 99热精品在线 | 精品国产91 | 羞羞色视频 | 九九99九九精彩46 | 午夜视频在线观看一区二区 | 欧美国产日本一区 | 激情a| 天堂在线免费视频 | 精品成人免费视频 | 欧美一级片在线看 | 国产一区二区三区久久久久久久久 |