在不停止程序的情况下使用C ++获取用户输入

时间:2010-09-26 02:56:11

标签: c++ multithreading

我有一个捕获视频的C ++程序,我希望能够创建一个命令行程序来动态更新其帧速率,图像格式等。

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

比你们所有人,

3 个答案:

答案 0 :(得分:3)

您是针对特定平台开发此内容还是需要独立于平台?

如果您正在开发Windows,您应该查看win32 API。特别是在msdn上的beginthread或_beginthreadex

我对* nix开发并不太熟悉,但我认为pthreads可以解决这个问题,可以在Windows和* nix中使用

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

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

我发现BOOST Threads比WIN32 Threads更容易使用,同时你没有被绑定到特定的平台API。

答案 1 :(得分:1)

创建一个处理视频的线程,同时使用主线程等待输入。线程创建取决于平台,对于那些新手来说可能有点压倒性。您将需要一个可以通过命令行更改的变量的互斥锁,并且您需要查找如何使您的代码“线程安全”。

答案 2 :(得分:0)

在多线程之前的日子里,通过不时地定期窥视键盘缓冲区也可以解决这个问题。我提到这只是打开多线程框的替代方案,这通常比你讨价还价更多。

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