簡體   English   中英

多次調用std :: cout使子進程掛起

[英]Multiple calls to std::cout make subprocess hang

我將在這里復制上一個問題,以描述問題:

我用C ++編寫了一個包含兩部分的應用程序-前端和后端。 這兩個使用wxWidgets提供的IPC層進行通信。 在后端,我使用一些舊函數來處理圖像數據。 這些功能之一有時會掛起或陷入無限循環(我可以觀察到某個時間點后,進程使用了​​0%的進程資源),但這僅在將后端作為前端的子進程運行時才會發生。 否則(當我手動運行它時)就可以正常工作。

事實證明,使用std::cout打印太多行會導致這種情況,但我想了解原因。 可能是wxWidgets使用了一些緩沖區來存儲應用程序輸出,而打印只是使它溢出了嗎? 還是這是Windows的固有問題? 也許它可能與std::cout實現有關? 我很確定我無法用printf重現它似乎我錯了printf也似乎觸發了該問題

標准輸出緩沖區的大小是有限的。 無論是文件,控制台窗口還是其他進程,都必須正在讀取要寫入緩沖區的內容。 如果您寫入的速度快於讀取器無法應付的速度,則緩沖區最終將填滿並阻止任何進一步的寫入,直到讀取器讀取了一些數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM