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

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

開發(fā) 前端
為什么會(huì)這樣呢?實(shí)際上,我們?cè)凇度绾问褂胒ork創(chuàng)建進(jìn)程》中就提到過(guò),fork的時(shí)候會(huì)拷貝父進(jìn)程的數(shù)據(jù)內(nèi)容,即寫時(shí)復(fù)制,但是,像啟動(dòng)運(yùn)行的線程,是不會(huì)被“復(fù)制”過(guò)去的。

本文轉(zhuǎn)載自微信公眾號(hào)「編程珠璣」,作者守望先生。轉(zhuǎn)載本文請(qǐng)聯(lián)系編程珠璣公眾號(hào)。

一個(gè)多線程進(jìn)程fork出來(lái)的進(jìn)程是多線程還是單線程的?先說(shuō)結(jié)論:是單線程的。

實(shí)踐

口說(shuō)無(wú)憑,我們先寫段代碼實(shí)踐驗(yàn)證一下。

  1. // 來(lái)源:公眾號(hào)【編程珠璣】 
  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); // 后臺(tái)執(zhí)行 
  21.   start.store(true); 
  22.   t1.join();  // 等待threadfunc運(yùn)行結(jié)束 
  23.   return 0; 

編譯運(yùn)行:

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

結(jié)果正常,線程不斷循環(huán)打印信息。那如果啟動(dòng)線程后,再fork呢?即將代碼中daemon的相關(guān)行的注釋去掉,再編譯運(yùn)行。

在《如何讓程序真正地后臺(tái)運(yùn)行?》中我們知道,daemon實(shí)際上做了進(jìn)程的fork。

運(yùn)行這個(gè)例子,我們會(huì)發(fā)現(xiàn),程序立馬退出了,沒有打印我們預(yù)想的內(nèi)容。

為什么

為什么會(huì)這樣呢?實(shí)際上,我們?cè)凇度绾问褂胒ork創(chuàng)建進(jìn)程》中就提到過(guò),fork的時(shí)候會(huì)拷貝父進(jìn)程的數(shù)據(jù)內(nèi)容,即寫時(shí)復(fù)制,但是,像啟動(dòng)運(yùn)行的線程,是不會(huì)被“復(fù)制”過(guò)去的。也就是說(shuō),從父進(jìn)程fork出來(lái)的子進(jìn)程,將會(huì)是單線程的。這也就給了我們一些啟示

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

 

怎么理解呢?比如說(shuō),你設(shè)計(jì)了某一個(gè)功能,你的功能是需要啟動(dòng)一個(gè)線程來(lái)進(jìn)程工作,那么你在使用的時(shí)候,就必須要特別注意這種fork進(jìn)程的場(chǎng)景,即需要在fork之后啟動(dòng)線程,才能保證線程能夠正常啟動(dòng)并工作。

 

責(zé)任編輯:武曉燕 來(lái)源: 編程珠璣
相關(guān)推薦

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

工具代碼開發(fā)

2024-08-12 09:43:42

2013-07-16 16:37:12

91百度

2020-11-21 19:04:33

技術(shù)開發(fā)指標(biāo)

2013-08-30 10:25:22

Shell主機(jī)監(jiān)控

2025-06-25 07:08:09

grepsedawk

2018-12-28 10:45:08

Linux文本行命令

2020-12-23 11:08:10

Python代碼文本

2021-03-28 08:57:57

Python 文本數(shù)據(jù)

2013-06-03 11:28:05

shell命令

2011-04-14 14:37:06

職場(chǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 蜜臀久久99精品久久久久野外 | 成人片免费看 | 久久久国产精品 | 一级在线 | 中文字幕在线三区 | 亚洲精品成人 | 久久久网 | 欧美日产国产成人免费图片 | 国产欧美一区二区三区在线看 | 国产亚洲精品久久久优势 | 久久久久无码国产精品一区 | 韩日精品一区 | 一区二区三区在线免费看 | 中文字幕亚洲一区二区三区 | 成年人网站免费视频 | 成人av电影在线 | 久久久看 | 中文字幕免费视频 | 51ⅴ精品国产91久久久久久 | 久久不卡区 | 国产精品欧美一区二区三区不卡 | 久久一区二区三区免费 | 成人免费共享视频 | 中文字幕亚洲在线 | 1204国产成人精品视频 | 视频一区二区中文字幕 | 一区二区电影 | 欧美日韩在线一区二区三区 | 在线视频中文字幕 | 中文字幕在线视频免费视频 | 一级片在线观看 | 欧美一二区 | 亚洲精品永久免费 | 91精品在线播放 | 久久网一区二区三区 | 中文字幕一区二区在线观看 | 99久久婷婷国产亚洲终合精品 | 四虎影视1304t | 国产福利视频 | 一区二区三区在线免费观看 | 成人片网址 |