У меня есть приложение, мне нужно спать новый поток, не останавливая выполнение текущего.C++ thread sleep без замораживания текущей темы
Часть кода из приложения:
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
Как это исправить? Есть ли другой способ вместо сна? Я nawbie в C++.
Вопрос о 'Sleep' заключается в том, чтобы заморозить текущую нить, поэтому ваш вопрос не имеет особого смысла. –