Le Multithreading à l'aide de la bibliothèque boost

Souhaitez appeler simultanément une fonction à plusieurs reprises. Je souhaite utiliser des threads pour appeler une fonction qui permettra d'utiliser les machines de capacité au maximum. C'est un 8 core de la machine, et mon exigence est d'utiliser le cpu de la machine de 10% à 100% ou plus.

Mon exigence est d'utiliser le boost de la classe. Est il possible que je peux accomplir cela en utilisant le coup de pouce de fil ou de pool de threads de la bibliothèque? Ou une autre façon de faire?

Aussi, si je dois faire appel à plusieurs fonctions avec des paramètres différents à chaque fois (avec des threads séparés), quelle est la meilleure façon de le faire? [utilisation de boost ou pas d'utilisation de boost] et comment?

#include <iostream>
#include <fstream>
#include <string.h>
#include <time.h>
#include <boost/thread/mutex.hpp>
#include <boost/bind.hpp>

using namespace std;
using boost::mutex;
using boost::thread;

int threadedAPI1( );
int threadedAPI2( );
int threadedAPI3( );
int threadedAPI4( );

int threadedAPI1( ) {
    cout << "Thread0" << endl;
}


int threadedAPI2( ) {
    cout << "Thread1" << endl;
}

int threadedAPI3( ) {
    cout << "Thread2" << endl;
}

int threadedAPI4( ) {
    cout << "Thread3" << endl;
}

int main(int argc, char* argv[]) {

    boost::threadpool::thread_pool<> threads(4);
    //start a new thread that calls the "threadLockedAPI" function
    threads.schedule(boost::bind(&threadedAPI1,0));
    threads.schedule(boost::bind(&threadedAPI2,1));
    threads.schedule(boost::bind(&threadedAPI3,2));
    threads.schedule(boost::bind(&threadedAPI4,3));
    //wait for the thread to finish
    threads.wait();

    return 0;
}

Le ci-dessus ne fonctionne pas et je ne suis pas sûr pourquoi? 🙁

C'est toujours une bonne idée pour spécifier comment c'est "pas de travail". Il ne veut pas faire ce que vous voulez? Il ne compile pas? Quelles erreurs avez-vous l'obtenir? Exactement où obtenez-vous?

OriginalL'auteur gagneet | 2008-12-05