2011-11-07 112 views
3

我目前正在寫一些測驗程序。該程序向用戶提出問題,直到指定的時間限制用完。現在如何設置測驗功能是在一個提升線程中運行的,並且定時方面由該線程上的timed_join()處理。我遇到的問題是當用戶使用cin回答問題時,線程將超過已建立的時間限制。有沒有辦法讓它打斷cin調用?用C++/Boost繞過阻塞輸入流

回答

2

您可以通過使用getchar,getchgetche以非阻塞式讀取字符讀取輸入字符。如果你已經循環足夠長的時間來達到超時,那麼停止循環:)。

+0

1爲了簡單起見。對於小型項目,這是我該怎麼做的。 –

0

您可能需要使用其他輸入法。 readline庫可能可以幫助你。或者,如果你是在Linux上,你可以去到純文件描述符,使STDIN_FILENO無阻塞像一個非阻塞套接字,並使用select系統調用,然後你可以同時獲得超時,並知道何時輸入已準備就緒。