Bonjour,
Je d�couvre la librairie TBB d'Intel pour la programmation multi-threading. J'ai bien compris comment fonctionne la fonction parallel_for mais je souhaiterais savoir s'il est possible de r�cup�rer un ID unique pour chaque thread qui appelle la lambda ? J'ai vu qu'on pouvait r�cup�rer l'ID du thread mais en fait je veux un ID compris entre 0 et nbThread.
Alors cette solution avec une variable statique pour l'id et un mutex fonctionne tr�s bien mais je trouve que c'est sale et puis cela necessite une synchronisation donc une perte de performance.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 static int id; id = 0; unsigned int nbThread = 4; unsigned int workPerThreadAjust = NodesToAnalyse.size()/nbThread+1; tbb::parallel_for( tbb::blocked_range<size_t>(0, NodesToAnalyse.size(), workPerThreadAjust), [&](const tbb::blocked_range<size_t>& r) { s_mutex.lock(); std::cout << "Thread ID=" << id << " / Analyse range: " << r.begin() << " -> " << r.end(); ++id; s_mutex.unlock(); this->_analyseNode(NodesToAnalyse, r.begin(), r.end(), id-1); } // fin de la lambda )
La fonction tbb::this_tbb_thread::get_id() ne fonctionne pas car retourne un gros identifiant (celui du thread courant) mais qui n'est pas dans l'intervalle [0, nbThread[
Une id�e ?
Merci par avance![]()
Partager