2010-09-26 154 views
0

我有一个捕获视频的C++程序,我希望能够创建一个命令行程序来实时更新其帧速率,图像格式等。使用C++获取用户输入而不停止程序

如何在不停止整个程序的情况下做到这一点?我需要它能够等待用户输入,但仍然能够同时捕捉视频。我知道这可能会涉及某种多线程,这是我完全陌生的。一些建议/链接会很好。

比你的一切,

+0

http://www.boost.org/doc/libs/1_41_0/doc/html/thread.html – Anycorn 2010-09-26 03:00:34

+0

谢谢,这看起来很有希望。我对多线程的概念很陌生,你能建议一些带有背景信息的链接吗?我也会尝试谷歌。 – amatsukawa 2010-09-26 03:05:33

+0

http://www.drdobbs.com/cpp/184401518 – Anycorn 2010-09-26 03:17:57

回答

1

创建一个线程来处理视频,而使用主线程等待输入。创建线程取决于平台,对于新手来说可能有些压倒性。你需要一个可以通过命令行修改的变量,并且你需要查看如何让你的代码“线程安全”。

3

您是为特定平台开发此应用程序还是需要平台独立?

如果您正在开发Windows,您应该查看win32 API。具体beginthread或_beginthreadex MSDN上

我不是太熟悉* nix的发展,而且并行线程我相信会做的伎俩,并可以在Windows中使用和* nix

另一种选择是使用Boost库。 BOOST可以在Windows和* nix系统上使用。以下是BOOST Thread文档的链接。

http://www.boost.org/doc/libs/1_44_0/doc/html/thread.html

我发现BOOST边线更容易比WIN32线程,并在你不束缚于一个特定的平台API同时使用。

+2

我需要它是平台独立的,所以我想我会使用提升。 – amatsukawa 2010-09-26 03:15:16

+0

boost可能是你最好的选择,因为我相信boost线程将成为新的C++标准的一部分。 Boost也包含Alexander提到的互斥体。 – emceefly 2010-09-26 03:17:54

0

在多线程前几天,通过定期查看键盘缓冲区,可以解决这个问题。我提到这只是作为打开多线程盒的一种替代方法,它经常给你比你讨价还价更多的东西。

编辑:我现在更仔细地读了一下你想实现的,有一个控制台程序用新设置更新另一个程序。我认为你需要的是程序彼此沟通。看看boost::interprocess

+0

如何做到这一点? – amatsukawa 2010-09-26 04:32:49