Suppose I have a future object to run a process, and then in my main function I check if the process is timed out, in which case I want to end the program.
Consider the following template code:
//(include relevant libraries)
int main() {
    std::future<int> future = std::async(std::launch::async, []() {
        int result = uncertainFunctionCall();
        return result;
    });
    std::future_status status = future.wait_for(std::chrono::milliseconds(50));
    if (status == std::future_status::timeout) {
       std::cout << "Timeout" << std::endl;
       exit();
    }
    try {
        std::cout << future.get() << std::endl;
        std::cout << "Success" << std::endl;
    }
    catch(...) {
        std::cout << "Exception Occurred" << std::endl;
        exit(); 
    }
    return 0; 
}
My question is, should there circumstances  under which I need to do some cleaning up before calling the exit() function? For my use case, I only care about getting the value, but I don't want uncertainFunctionCall() to affect future executions of this program.
