Non è così. Il thread parte nel momento in cui viene creato, vale a dire quando fai:
boost::thread thr1= boost::thread(&HttpRequestManager::run, &myHttpRequestManager);
il .join() serve solo ad aspettare che il thread finisca.
Se in mezzo ci scrivi altro, questo altro sarà eseguito in parallelo.