Boost logo

Boost Users :

From: Patrick Loney (Patrick.Loney_at_[hidden])
Date: 2008-08-06 10:45:44


I wrote the following to do some volume testing on a service, may help
you:

boost::mutex mutex;
bool testthreads( std::string& mdoid, std::vector<unsigned char>&
userpin )
{
    boost::mutex::scoped_lock lock( mutex );//wait for the main thread
to say go
    lock.unlock();//release mutex immediately to allow other threads to
start

    performOp();
    
    return true;
}

bool testmultithreaded()
{
    printf( "Please enter thread count [1-2048] : " );
    std::string input;
    std::cin >> input;
    unsigned long encCnt = std::strtoul( input.c_str(), NULL, 0 );
    if( encCnt == 0 || encCnt > 2048 ) {
        printf( "Thread count out of range" );
        return false;
    }

    const int threadCnt = encCnt;
    std::vector<boost::shared_ptr<boost::thread>> threads;

    boost::timer t;
    boost::mutex::scoped_lock lock( mutex );//lock the mutex to stop
threads from starting

    for( int i = 0; i < threadCnt; ++i )
    {
        threads.push_back( boost::shared_ptr<boost::thread>( new
boost::thread ( boost::bind( &testthreads, mdoid, userpin ) ) ) );
    }

    double threadscreated = t.elapsed();
    lock.unlock();//start the threads off

    for( int i = 0; i < threadCnt; ++i )
    {
        threads[i]->join();//wait for each thread to finish
    }

    double threadsFinished = t.elapsed();

    boost::mutex::scoped_lock hmilock(hmiMutex);
    printf( "%lu threads completed\n", encCnt );
    printf( "Threads created in %f seconds\n", threadscreated );
    printf( "Threads completed in %f seconds\n", threadsFinished -
threadscreated );

    return true;
}

******************************************************************************

"This message and any attachments are solely for the intended recipient and may contain confidential and privileged information. If you are not the intended recipient, any disclosure, copying, use, or distribution of the information included in this message and any attachments is prohibited. If you have received this communication in error, please notify us by reply e-mail and immediately and permanently delete this message and any attachments. Thank you."

Interactive Transaction Solutions Ltd (2473364 England)

Registered Office:
Systems House,
Station Approach
Emsworth PO10 7PW

**********************************************************************

Ce message électronique contient des informations confidentielles à l'usage unique des destinataires indiqués, personnes physiques ou morales. Si vous n'êtes pas le destinataire voulu, toute divulgation, copie, ou diffusion ou toute autre utilisation de ces informations, est interdite. Si vous avez reçu ce message électronique par erreur, nous vous remercions d'en avertir son expéditeur immédiatement par email et de détruire ce message ainsi que les éléments attachés.

Interactive transaction Solutions SAS- France (RCS Pontoise : 489 397 877)

Siège social :
Parc Saint Christophe,
10, Avenue de l’Entreprise
95865 Cergy-Pontoise Cedex

______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email
______________________________________________________________________


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net