0

現在のスレッドの実行を停止せずに新しいスレッドをスリープ状態にする必要があるアプリケーションを作成しています。

アプリケーションからのコード:

PlaySound(L"sounds\\started.wav", NULL, SND_FILENAME);
thread photos(makeScreens);
photos.join();
CONSOLE_Print("Some testing string");

非同期で動作する関数:

void makeScreens(){
    CONSOLE_Print("Make Screens entered");
    srand (time(NULL));
    CONSOLE_Print("Sleeping 30s");
    Sleep(30000);
    CONSOLE_Print("Wake up");
    long int delay;
    for(int i=0; i<5; i++){ //loop for max screens=5
        delay=rand() % 600000 + 60000; //random a delay beetween sreens from 1 to 10 minutes
        CONSOLE_Print("Sleeping "+delay/1000);
        Sleep(delay); //sleep 
        CONSOLE_Print("Wake up and make screen");
        gdiscreen(i); //take a screen
    }
}

したがって、アプリの現在の実行を停止せずに makescreens() を実行したいと考えています。私の出力は次のようになります。

Some testing string
Make Screens entered
Sleeping 30s
Wake up
Sleeping xxxx
Wake up and make screen

修正方法は?スリープを使用する代わりに他の方法はありますか? 私はC ++の初心者です。

4

2 に答える 2

0

電話しないでくださいphotos.join();

これにより、写真スレッドが終了するまでメインスレッドが待機します。

于 2013-09-02T15:50:21.473 に答える