2010-09-26 60 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