3

入力を待っている間にいくつかのコマンドを実行するにはどうすればよいですか?


このようなもの:

while(/*taking input*/) {
    sleep(15);
    cout<<"You still there?";

    //...     
}



そのため、入力を求めますが、ENTER が押されるのを待っている間にコマンドを実行します。
出来ますか?


編集
すべての提案をありがとう:)

4

4 に答える 4

3

C++11 のスレッド機能を使用すると、入力を待つ間に作業を行う「ワーカー」スレッドを簡単に生成できます。

std::async操作の結果を非同期に取得する簡単な方法です。あなたの問題の説明はあまり正確ではないので、ここに他に何を追加できるかわかりません。

スレッド化せずに実行できますが、一般にクロスプラットフォームではない入力への非同期アクセスが必要になります。

マーティンのコメントの後、私は実際に問題をより明確に見ています。この場合、おそらく最善の策は、ノンブロッキング入力を提供する、より抽象化された IO API を探すか、OS 固有の API に基づいて独自の API を作成することです。

于 2013-09-17T15:28:09.193 に答える
2

目的を達成するには、次の 2 つの方法があります。

  1. マルチスレッド
  2. 非同期 IO

あなたが言及した使用例 (チャット) については、2 番目のオプションを検討することをお勧めします。チャット クライアントとサーバーの例が含まれているboost asioのドキュメントを参照してください。

于 2013-09-17T15:35:01.113 に答える