C++, XCode 4.6.3, OSX 10.8.2, deploying on iOS

I am trying to create a timed event. 

My thought process was to create a thread, do the timing in it and then at the end have it call another function. This is working however it is pausing the rest of the program.

```
//Launch a thread
std::thread t1(start_thread);

//Join the thread with the main thread
t1.join();

void start_thread()
{
    std::cout << "thread started" << std::endl;

    auto start = std::chrono::high_resolution_clock::now();

    std::this_thread::sleep_until(start + std::chrono::seconds(20));

    stop_thread();
}

void stop_thread()
{
    std::cout << "thread stopped." << std::endl;
}

```

Is there a way to do this that doesn't pause program execution?

Update:

I could declare the thread in the header file and join in the stop\_thread():

```
void stop_thread()
{
    std::cout << "thread stopped." << std::endl;
    ti.join();
}

```

but that throws:

Type 'std::thread' does not provide a call operator

UPDATE 2: Calling t1.detach() instead of join seems to work.