1

フォアグラウンドで実行されているC++アプリケーションがあります。アプリケーションと同時に実行されるタイマーが必要です。タイマーがゼロになったら、ウィンドウをポップアップするタイマーが必要です。

whoアプリケーションがスリープしているため、sleep()を使用できません。これを行う方法についてアドバイスしてください。

4

2 に答える 2

10

C ++ 11を使用しているので、threadライブラリを使用することをお勧めします。

おそらく必要なのは、またはのいずれstd::this_thread::sleep_forかですstd::this_thread::sleep_until。これは、タイマースレッドのコンテキストで呼び出すことができます。

このようなもの...

std::thread timer([]() {
  std::this_thread::sleep_for(std::chrono::seconds(5));
  std::cout << "hello, world!" << std::endl;
});
std::cout << "thread begun..." << std::endl;
timer.join();
于 2012-08-19T15:46:46.480 に答える
0

Boostライブラリをダウンロードしてから、この非常に簡単なチュートリアルを使用してBoostスレッドを作成することをお勧めします。

Boostのダウンロード/インストール/構成に時間をかけたくない場合は、Windowsスレッドを使用してください。(私はあなたがsleep()あなたがWindows上にいることを使おうとしていると仮定しています)。ただし、Windowsスレッドは、Boostスレッドよりも理解が複雑です。

実際のプログラムでは、次のようなものを含める必要があります(例としてBoostを使用)。

void timer() {

    sleep(x);
    //Whatever code here to make your popup window.
    return NULL;
}

int main() {

    boost::thread prgmTimer(&timer);
    //Regular code here.
    //prgmTimer.join(); //Remove the comment on that command if you want something to
                        //to happen after your timer runs down and only if your
                        //timer runs down. (Ex. the program exits).
    return 0;
}
于 2012-08-19T16:19:20.043 に答える