Пусть имеется класс, выполняющий запуск некоторой работы в потоке:
void MyThread::run() {
if (!ThreadPtr) {
ThreadPtr = new std::thread(&MyThread::realWork, this);
ThreadPtr->detach();
}
}
При этом при этом realWork содержит вызов некоторой долгоработающей функции из сторонней библиотеки
MyThread::realWork(){ hardlib.hardWork(); ...}
Как можно прервать запущенный поток? Корректно ли просто сделать delete?
void MyThread::break() {
if (ThreadPtr) {
delete ThreadPtr;
ThreadPtr=null;
}
}