多道程序设计C++;每帧的应用程序 背景:我在Windows 10上使用C++和MFC框架。我基本上是拍摄一段视频,并对视频的每一帧执行动作。对于视频的每一帧,我创建一个新的文本文件,并将一组数据写入该文件,比如100列和2000行数字。在我的应用程序中,我还有一个“停止”按钮,以便停止整个操作

多道程序设计C++;每帧的应用程序 背景:我在Windows 10上使用C++和MFC框架。我基本上是拍摄一段视频,并对视频的每一帧执行动作。对于视频的每一帧,我创建一个新的文本文件,并将一组数据写入该文件,比如100列和2000行数字。在我的应用程序中,我还有一个“停止”按钮,以便停止整个操作,c++,multithreading,parallel-processing,mfc,multiprocessing,C++,Multithreading,Parallel Processing,Mfc,Multiprocessing,我注意到,如果我创建文本文件并为每一帧写入一组数据,我甚至无法点击“停止”按钮。我假设这是因为CPU忙于写入文本文件,因为如果我只创建一个文本文件并每隔20帧(或大约20帧)向其写入数据,我就能完美地点击“停止” 但我需要能够在每一帧写入数据。在优化我的计划以实现这一目标方面,我看到了两个机会: 多线程:为每个帧写入每个文本文件 有一个单独的线程/进程等待按下“停止”按钮,以便实际按下它。(这可能吗?) 我只是想看看其他人对我如何实现这一目标还有什么想法。我的假设/想法正确吗?你的假设是正确的!

我注意到,如果我创建文本文件并为每一帧写入一组数据,我甚至无法点击“停止”按钮。我假设这是因为CPU忙于写入文本文件,因为如果我只创建一个文本文件并每隔20帧(或大约20帧)向其写入数据,我就能完美地点击“停止”

但我需要能够在每一帧写入数据。在优化我的计划以实现这一目标方面,我看到了两个机会:

  • 多线程:为每个帧写入每个文本文件

  • 有一个单独的线程/进程等待按下“停止”按钮,以便实际按下它。(这可能吗?)


  • 我只是想看看其他人对我如何实现这一目标还有什么想法。我的假设/想法正确吗?

    你的假设是正确的!但是您只需要创建一个单独的线程来执行文件写入:这可能会有一个循环,因此您可以在循环中设置一个互斥/标志,以便在发出信号时中止。如果用户点击“停止”按钮,你的主线程可以设置该信号。谢谢你的回复!为了确保我理解正确:所以我会有一个主线程来处理整个应用程序,等待用户操作,等等。然后,对于每个帧,我会创建一个单独的线程来写入文件(或者你说的是总共一个单独的线程?)。在写入文件的循环中,我会有一个if检查(if标志,然后停止)。只需使用一个线程来写入整个文件:“外部”循环的每次迭代(
    for
    如果知道有多少帧,或者
    while…EOF check
    如果没有)将首先检查标志(如果设置,则中止)然后把那个框架写到文件里。哦,我明白了。在我的例子中,我正在为每一帧编写一个单独的文件。例如,如果我有100个帧,那么最终会有100个文件,其中包含数据。另外,我正在调用我的函数从MFC中的消息映射(来自dll文件)写入文件,因此根据您的想法,我将为单个fille写入函数创建一个单独的线程?很抱歉造成混乱,但感谢您迄今为止的帮助!相同的逻辑:只需在每个外部循环中创建和写入每个文件。