Безопасное удаление std::promise
От: dosik Россия www.dosik.ru
Дата: 21.03.16 10:05
Оценка:
Для эксперимента накидал вот такой код:
#include <iostream>
#include <chrono>
#include <thread>
#include <future>

std::promise<void> *p;

std::future<void> getfuture(){
    p = new std::promise<void>;
    return p->get_future();
}

void timeout() {
    std::this_thread::sleep_for(std::chrono::milliseconds(500));
    p->set_value();
    delete p;
}

int main() {
    std::future<void> f = getfuture();

    std::thread t(timeout);

    std::future_status status = f.wait_for(std::chrono::milliseconds(1500));

    if (status == std::future_status::timeout)
        std::cout << "timeout";
    else{
        f.get();
        std::cout << "get";
    }

    t.join();

    return 0;
}

На сколько в данном случае безопасно удаление std::promise в функции timeout().
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.