gpt4 book ai didi

c++ - 线程在无限循环中创建进程

转载 作者:行者123 更新时间:2023-11-28 00:37:01 25 4
gpt4 key购买 nike

在我的应用程序中,一个线程在其中运行 while(1){},因此当我的应用程序被用户终止时线程终止。

这样做安全吗?我正在使用 while(1){} 因为我的应用会持续监控系统上的设备。

一段时间后,我在 ffmpeg 上收到“(R6016) 线程数据空间不足”。

我读了这个但没有得到我的问题的解决方案:

http://support.microsoft.com/kb/126709

线程描述:线程使用 ffmpeg 和句柄实用程序 ( http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx )。在 while(1){} 循环中。

ffmpeg 和 handle 正在通过 QProcess 运行,我将在进程结束后将其删除。

while(1){} 循环等待 5 秒使用 sleep 时间(5000)。

最佳答案

这不安全。

while (1) 更改为 while (!stopCondition) 并在退出时将 stopCondition 更改为 TRUE。主线程应等待所有其他线程完成后再退出。

注意:stopCondition 定义为 volatile int stopCondition

当主线程存在时,一个清理进程开始: - 调用全局析构函数 (C++)。 - C 运行时库开始关闭,释放所有使用 malloc 分配的内存,卸载动态库和其他资源。

依赖于 C 运行时正常运行的线程将会崩溃,或者如果它运行来自共享/动态库的代码。如果那个线程正在做一些重要的事情,比如写入文件,那么文件就会损坏。也许在您的情况下情况还不错,但是至少可以说看到应用程序崩溃看起来并不好。

这不是完整的故事,但我认为这说明了我的观点。

关于c++ - 线程在无限循环中创建进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20494115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com