}
}
/*
* We can retain the reference to the response object !!
*/
$response = new Response(sprintf("http://www.google.com/?q=%s", md5(rand() * time())));
/*
* Initialize a new threaded request with a response object as the only parameter
*/
$request = new Request($response);
/*
* Tell you all about it ...
*/
printf("Fetching: %s ", $response->getUrl());
if ($request->start()) {
    /* do something during runtime */
    while ($request->isRunning()) {
        echo ".";
        $request->synchronized(function () use($request) {
            $request->wait(100);
        });
    }
    /* 
    	you do not need to join:
    		when a thread returns false for isRunning then your code is no longer being executed
    		pthreads will cleanup the variable when it goes out of scope like any other variable in php
    */
    printf(" got %d bytes in %f seconds\n", $response->getLength(), $response->getDuration());
}
$request->join();