C++ creare thread senza bloccare esecuzione nel main

di il
1 risposte

C++ creare thread senza bloccare esecuzione nel main

Devo creare un thread in C++ all'interno del main che faccia delle operazioni in background, ossia senza bloccare l'esecuzione del main, utilizzando la libreria Boost/thread (sto lavorando su Linux).
Vedendo la documentazione della suddetta libreria, essa non espone (come accade in C# e Java) un metodo start, ma l'unico modo per far partire il thread sembrerebbe join, che blocca il thread padre finchè il thread figlio non ha finito (cosa che prescinde dal mio scopo).

Il codice inserito nel main è il seguente:

int main()
{
......

HttpRequestManager myHttpRequestManager(&myLog);
boost::thread thr1= boost::thread(&HttpRequestManager::run, &myHttpRequestManager);
thr1.join();

.....
}

Come è evidente sto creando un thread che al suo avvio lancia una run() che sta nella classe myHttpRequestManager. Tutto funziona ma ovviamente l'esecuzione del main è bloccata dalla join. Qualcuno ha qualche idea????

1 Risposte

  • Re: C++ creare thread senza bloccare esecuzione nel main

    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.
Devi accedere o registrarti per scrivere nel forum
1 risposte