5 votes

Multithreading avec l'API C++

J'essaie de paralléliser mon programme en utilisant OpenMP et j'ai parfois l'impression d'être dans une impasse.

Je voudrais partager des variables dans une fonction membre que j'ai définie (et initialisée) dans la classe. Si j'ai bien compris, il n'est pas possible de faire ce qui suit #pragma omp parallel shared(foo) de membres de données (par exemple int , boost::multi_array y std::vector ) d'une classe. Par exemple : utilisation de push_back() sur un membre de données vectorielles dans la classe. la mise à jour des valeurs d'un boost::multi_array .

Ma question est de savoir si OpenMP est le bon outil pour cela, ou si je dois utiliser boost::thread ou tbb ? ou quelque chose d'autre... quel support pour l'API C++ ?

Reagrds

1voto

Constantinius Points 13708

Comme le documentation États, shared définit qu'un objet n'est placé qu'une seule fois dans la mémoire. Par exemple, si votre foo contient un std::vector d'un certain type, il devrait c'est tout à fait normal de push_back dans la boucle. Mais vous devez vous assurer que votre code est thread safe, soit par des instructions atomiques, soit par des sections mutex.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X