Выход из функции во время вычислений C++

91
20 сентября 2019, 11:20

Проблема состоит в том, что это решение я нигде не нашёл. Мне нужно реализовать немедленное завершение функции во время, допустим, проигрывания мелодии и сделать это, допустим, с помощю потоков (мне надо, чтобы программа не завершалась, а просто прекратила выполнение функции, и пошла далее по строкам кода).

Вот пример кода:

#include <Windows.h>
#include <iostream>
#include <thread>
using namespace std;
class Player {
public:
    void SoundPlay() {
        PlaySoundA(TEXT("lol.wav"),0,SND_SYNC);
    }
};
void cdecl StopPlayer(Player* p) {//остановка музыки
    Sleep(5000);//мелодия проигрывает 5 секунд
    delete p;//функция остается в стеке вызова и выполняется до конца,удаление объекта ничего не дает
    //SendMessageA(GetForegroundWindow(),WM_CLOSE,0,0);//работает,но завершает программу,а надо чтобы не завершало
}
int main() {
    Player* p = new Player;
    thread t(StopPlayer,p);
    t.detach();
    p->SoundPlay();
    system("pause");
    return 0;
}
READ ALSO
Qt: возможен ли неявный connect?

Qt: возможен ли неявный connect?

Мне дали доработать приложение написанное с использованием QtВ приложении есть некий диалог унаследованный от QDialog

128
Сжатие Mat изображения

Сжатие Mat изображения

Всех приветствую

115
Потоки в с++, лишний поток [закрыт]

Потоки в с++, лишний поток [закрыт]

Имеется простейшие код создания потока:

75
Шифрование файлов в windows

Шифрование файлов в windows

Задание звучит следующим образом:

123