Example #1
0
void * thread_trace(thr_parms * parms)
{
    int irc;

    // shared but read-only so could be private too
    all_parms = parms;
    scene = parms->scene;
    startx = parms->startx;
    stopx = parms->stopx;
    starty = parms->starty;
    stopy = parms->stopy;
    jitterscale = 40.0*(scene.hres + scene.vres);
    totaly = parms->scene.vres-1;

    //Create mutex for pixel rendering
    pthread_mutexattr_settype (&rgb_mutexattr, PTHREAD_MUTEX_RECURSIVE_NP);
    pthread_mutex_init (&rgb_mutex, &rgb_mutexattr);

    parallel_thread ();

    // Destroy the rgb_mutex
    irc = pthread_mutex_destroy (&rgb_mutex);

    return(NULL);
}
Example #2
0
File: sort.c Project: nip3o/tddd56
void parallelMergesort(value *array, int n) {
    pthread_mutex_init(&mutex, NULL);
    thread_count = 1;

    struct sorting_args arg;
    arg.array = array;
    arg.length = n;
    ARRAY_SIZE = n;

    parallel_thread(&arg);
}
Example #3
0
void * thread_trace(thr_parms * parms)
{
    // shared but read-only so could be private too
    all_parms = parms;
    scene = parms->scene;
    startx = parms->startx;
    stopx = parms->stopx;
    starty = parms->starty;
    stopy = parms->stopy;
    jitterscale = 40.0*(scene.hres + scene.vres);
    totaly = parms->scene.vres-1;

    parallel_thread ();

    return(NULL);  
}
Example #4
0
File: sort.c Project: nip3o/tddd56
void *
parallel_thread(void* arg) {
    struct sorting_args * args = (struct sorting_args*)arg;
    if (args->length == 1)
        return 0;

    int create = 0;
    if (args->length >= ARRAY_SIZE / 2) {
        /* Critical Section */
        pthread_mutex_lock(&mutex);
        if (thread_count < NB_THREADS) {
            thread_count++;
            create = 1;
        }
        pthread_mutex_unlock(&mutex);
    }

    int middle = args->length / 2;

    if (create == 1){
        struct sorting_args t_arg, t_arg2;
        pthread_t t;

        t_arg.array = args->array + middle;
        t_arg.length = args->length - middle;

        t_arg2.array = args->array;
        t_arg2.length = middle;

        pthread_create(&t, NULL, &parallel_thread, &t_arg);
        printf("Creating thread %d\n", t_arg.length);
        parallel_thread(&t_arg2);

        pthread_join(t, NULL);

    } else {
        sequentialMergesort(args->array, args->length);
    }

    sequentialMerge(args->array, middle, args->length);
    return 0;
}
Example #5
0
void * thread_trace(thr_parms * parms)
{
    // shared but read-only so could be private too
    all_parms = parms;
    scene = parms->scene;
    startx = parms->startx;
    stopx = parms->stopx;
    starty = parms->starty;
    stopy = parms->stopy;
    jitterscale = 40.0*(scene.hres + scene.vres);
    totaly = parms->scene.vres - 1;

#if DO_ITT_NOTIFY
    __itt_resume();
#endif
    parallel_thread();
#if DO_ITT_NOTIFY
    __itt_pause();
#endif

    return(NULL);
}