同时执行功能

时间:2011-08-01 20:22:36

标签: c++ multithreading execution

我正在创建一个应用程序,它必须执行一个耗时太长的函数(让它称之为slowfunc()),这是一个问题,因为我的应用程序正在使用实时视频源。通过每帧运行此功能,帧速率受到严重影响。

有没有办法在后台运行slowfunc()而不使用线程?我不一定需要它来运行每一帧,但每次完成时,我都想检查输出。我现在唯一能想到的就是将slowfunc()分成几个“迷你函数”,每个函数大约需要相同的时间,然后每帧运行一个微型函数。但是,slowfunc()是一个相对复杂的功能,我觉得应该(希望是)一种简单的方法。

编辑:我不能使用线程,因为这个程序最终会用在一个可能不支持线程的微型机器人处理器上。我想我可以使用“合作多任务处理”。谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

你要求执行死刑。这样做的两种方法是 - : a)多线程 - :创建另一个在后台运行的线程。 b)多处理 - :创建另一个进程。通过共享内存模型获取该功能所需的所有输入。使用原始进程(父进程)创建同步机制。执行此功能。

通常优先使用第一个。执行速度更快。

第二个保证如果函数崩溃,你的父进程仍然运行。虽然,这有点无关紧要,因为,为什么你希望你的孩子(功能)崩溃。这需要更多的记忆。

答案 1 :(得分:0)

在线程中运行它并在计算完成后,使线程休眠直到另一个计算准备好运行。这样,每次都不会遇到线程的初始化。