pthread_create returns error code 11

Discussion in 'C++' started by Joy, May 27, 2009.

  1. Joy

    Joy Guest

    i have a code that uses pthread, but when i use pthread_create()
    method it returns error code 11. I have found out that this is often
    because of exceeding the THREAD_MAX limit for the process. But i want
    to use only about 24 threads at a given time, and i destroy the
    threads (or atleast i thought so) can someone tell me what i am doing
    wrong here it would be of great help! thanks!

    for (i=0; i<no_pairs; ){
    for (j=0; j<MAX_THREADS && i<no_pairs; j++,i++){
    data[j].a = seeds[i/no_seeds];
    data[j].b = seeds[i%no_seeds];
    data[j].N = N;
    data[j].L = nones+nzeros;
    data[j].p1 = get_string (seeds[i/no_seeds], nzeros
    +nones-1);
    data[j].p2 = get_string (seeds[i%no_seeds], nzeros
    +nones-1);
    data[j].results = pairs;
    rc = pthread_create (&threads[j], &attr, run_actree, (void
    *)
    &data[j]);
    if (rc) {
    printf ("ERROR; return code from pthread_create() is %d
    \n", rc);
    exit (-1);
    }
    }
    for (k=0; k<j; k++){
    rc = pthread_join (threads[k], &status);
    if (rc) {
    printf("ERROR; return code from pthread_join() is %d
    \n", rc);
    exit(-1);
    }
    }
    }

    pthread_attr_destroy (&attr);

    Above is the main loop i create threads in, MAX_THREADS = 24

    Any help as to where i am going wrong is greatly appreciated.
     
    Joy, May 27, 2009
    #1
    1. Advertisements

  2. First off, 24 threads sounds like an awful lot to me.
    Is there any particular reason you need so many? Because unless you are
    working on a serious multi-processor/multi-core machine, there is no way
    that this many threads is going to buy you anything in processor
    utilisation.


    It might be helpful in understanding when the error occurs to print i
    and j as well.
    My guess is that the value of MAX_THREADS also includes the thread that
    is spawning all the others. If that is so, the failure will occur at
    j==23.

    Bart v Ingen Schenau
     
    Bart van Ingen Schenau, May 27, 2009
    #2
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.