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!

#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 = (volatile double **) malloc((rows + 2) * sizeof(double *));
        after = (volatile double **) malloc((rows + 2) * sizeof(double *));
    }

    for(i = 0; i < cols + 2; i++){
        for(j = 0; j < rows + 2; j++){
            before[j] = (volatile double *) malloc((faces + 2) * sizeof(double));
            after[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[j][k] = ROOMTEMP;
                after[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!

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!

#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 = (volatile double **) malloc((rows + 2) * sizeof(double *));
        after = (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[j] = (volatile double *) malloc((faces + 2) * sizeof(double));
            after[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[j][k] = ROOMTEMP;
                after[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);

}