Threads help


 
Thread Tools Search this Thread
Top Forums Programming Threads help
# 1  
Old 05-15-2009
Threads help

Hello! I started studying studying about POSIX Threads a few days ago... so I am a little confused and I would appreciate some help!

I isolated this code... and I wonder if I could use threads in it!

Code:
#include <unistd.h>
#endif

#include <math.h>
//#include "main.h"
#include <sys/time.h>
#include <time.h>


#define TEMPRANGE 100.0
#define ROOMTEMP 0.0

volatile double ***before;
volatile double ***after;

// x-axis
const int cols = 240;
// y-axis
const int rows = 80;
// z-axis
const int faces = 8;


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

  char buffer[30];
  struct timeval tv;
  time_t curtime;

  gettimeofday(&tv, NULL); 
  curtime=tv.tv_sec;

  strftime(buffer,30,"%m-%d-%Y  %T.",localtime(&curtime));
  printf("%s%ld\n",buffer,tv.tv_usec);

    int i, j, k;
    before = (volatile double ***) malloc((cols + 2) * sizeof(double **));
    after = (volatile double ***) malloc((cols + 2) * sizeof(double **));

    for(i = 0; i < cols + 2; i++){
        before[i] = (volatile double **) malloc((rows + 2) * sizeof(double *));
        after[i] = (volatile double **) malloc((rows + 2) * sizeof(double *));
    }

    for(i = 0; i < cols + 2; i++){
        for(j = 0; j < rows + 2; j++){
            before[i][j] = (volatile double *) malloc((faces + 2) * sizeof(double));
            after[i][j] = (volatile double *) malloc((faces + 2) * sizeof(double));
        }
    }

    for(i = 0; i < cols + 2; i++){
        for(j = 0; j < rows + 2; j++){
            for(k = 0; k < faces + 2; k++){
                before[i][j][k] = ROOMTEMP;
                after[i][j][k] = ROOMTEMP;
            }
        }
    }

    char buffer1[30];
  time_t curtime1;
  gettimeofday(&tv, NULL); 
  curtime1=tv.tv_sec;

  strftime(buffer1,30,"%m-%d-%Y  %T.",localtime(&curtime1));
  printf("%s%ld\n",buffer1,tv.tv_usec);

}

I was thinking of putting the three for loops in 3 different threads and keep in the main the other code and use pthread_join in main for each one of the 3 threads. I hope you understand my way of thinking... Am I thinking right?
Thank you in advance!
# 2  
Old 05-15-2009
Here is my threade code... If anybody can take a look and tell me if there is sth wrong I would appreciate it very much!

Code:
#ifdef linux
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
#endif

#include <math.h>
//#include "main.h"
#include <sys/time.h>
#include <time.h>

#define TEMPRANGE 100.0
#define ROOMTEMP 0.0
#define SOURCETEMP 100.0

// Plate temperatures for the jacobi calculation
volatile double ***before;
volatile double ***after;

// x-axis
const int cols = 240;
// y-axis
const int rows = 80;
// z-axis
const int faces = 8;


//thread function1
void *thread_function1 (void *arg){
    before = (volatile double ***) malloc((cols + 2) * sizeof(double **));
    after = (volatile double ***) malloc((cols + 2) * sizeof(double **));
}

//thread function2
void *thread_function2 (void *arg){
    for(int i = 0; i < cols + 2; i++){
        before[i] = (volatile double **) malloc((rows + 2) * sizeof(double *));
        after[i] = (volatile double **) malloc((rows + 2) * sizeof(double *));
    }
}

//thread function3
void *thread_function3 (void *arg){
    for(int i = 0; i < cols + 2; i++){
        for(int j = 0; j < rows + 2; j++){
            before[i][j] = (volatile double *) malloc((faces + 2) * sizeof(double));
            after[i][j] = (volatile double *) malloc((faces + 2) * sizeof(double));
        }
    }

}


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

  char buffer[30];
  struct timeval tv;
  time_t curtime;
  pthread_t mythread1;
  pthread_t mythread2;
  pthread_t mythread3;

  gettimeofday(&tv, NULL); 
  curtime=tv.tv_sec;

  strftime(buffer,30,"%m-%d-%Y  %T.",localtime(&curtime));
  printf("%s%ld\n",buffer,tv.tv_usec);

    int i, j, k;

    if ( pthread_create( &mythread1, NULL, thread_function1, NULL) ) {
    printf("error creating thread.");
    abort();
  }

      if ( pthread_create( &mythread2, NULL, thread_function2, NULL) ) {
    printf("error creating thread.");
    abort();
  }

        if ( pthread_create( &mythread3, NULL, thread_function3, NULL) ) {
    printf("error creating thread.");
    abort();
  }
          if ( pthread_join ( mythread1, NULL ) ) {
    printf("error joining thread.");
    abort();
  }
            if ( pthread_join ( mythread2, NULL ) ) {
    printf("error joining thread.");
    abort();
  }
              if ( pthread_join ( mythread3, NULL ) ) {
    printf("error joining thread.");
    abort();
  }

    for(i = 0; i < cols + 2; i++){
        for(j = 0; j < rows + 2; j++){
            for(k = 0; k < faces + 2; k++){
                before[i][j][k] = ROOMTEMP;
                after[i][j][k] = ROOMTEMP;
            }
        }
    }

    char buffer1[30];
  time_t curtime1;

  gettimeofday(&tv, NULL); 
  curtime1=tv.tv_sec;

  strftime(buffer1,30,"%m-%d-%Y  %T.",localtime(&curtime1));
  printf("%s%ld\n",buffer1,tv.tv_usec);

}

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Post Here to Contact Site Administrators and Moderators

Threads disappeared

Dear admins, it seems that some threads or even users have recently (~ 2 days or so) disappeared. Examples: giuliangiuseppe and greycells. The latter asked me for the solution I provided earlier this week. What happened? Can you help? Regards Rüdiger (10 Replies)
Discussion started by: RudiC
10 Replies

2. What is on Your Mind?

Why not more DEVOPS threads?

Hello all, searching for answers about our upcomming infrastructure in my compagny i was sadden by the fact that in my favorite programming forum there was basicly no threads about devops subjects or continious integration platform. Would be fun to know people workflows in their compagny and... (0 Replies)
Discussion started by: maverick72
0 Replies

3. Programming

Java Threads

Hi guys, I want to start studding about java threads. but the only book available on the market is "Java Threads" by O'Reilly... (0 Replies)
Discussion started by: majid.merkava
0 Replies

4. Programming

problem with threads in C

I have problem that if I create for example 100 threads program work correctly but if I define more threads for example 1000 // if I change static int NUM_E from 100 to 1000 than program stop about 350 threads and doesn't continue where should be problem please? #include <pthread.h>... (4 Replies)
Discussion started by: Sevco777
4 Replies

5. UNIX for Advanced & Expert Users

Threads and Threads Count ?

Hi all, How can I get the list of all Threads and the Total count of threads under a particular process ? Do suggest !! Awaiting for the replies !! Thanks Varun:b: (2 Replies)
Discussion started by: varungupta
2 Replies

6. UNIX for Advanced & Expert Users

How many threads do I use ?

Hi, I have a program that has two types of threads: 1) Reader threads 2) Worker Threads Readers: Their only job is to read files. They just read data from the files and put them into a buffer. They are obviously I/O intensive. Workers: These are CPU intensive. They do some computation... (5 Replies)
Discussion started by: the_learner
5 Replies

7. Solaris

threads

Hi all! 1)Is there a way to write a program that will work on both solaris and intel based machines. 2)How can I achive this for a program that creates and synchronizes three threads. Thank you. vij. (3 Replies)
Discussion started by: vijlak
3 Replies

8. UNIX for Dummies Questions & Answers

threads

i am tring to sort lots of data thats in many columns by just one column but, if I use sort +16 inputfile the column fluctuates because some of the rows have spaces etc within the text, so the end result is just a mess as it jumps around the columns depending whether it has spaces or not ....ie... (2 Replies)
Discussion started by: Gerry405
2 Replies

9. Post Here to Contact Site Administrators and Moderators

old threads

Neo, if I have an old thread that is a few months old, and a few pages back in the forum it was posted in, is it ok to 'bump' it back to the front? or, would you rather i deleted the old thread, and just create a new one? btw the thread has no replies. (2 Replies)
Discussion started by: norsk hedensk
2 Replies
Login or Register to Ask a Question