'Have problems with multiprogramming in pthread, only part of the program works

I'm trying to write a code that prints "Hello World!" 10 times with "sleep" for a second, then the program should print "Hello Moon!" 10 times with "sleep" for 0.2 seconds. This process must be repeated forever. The problem is that the program only prints "Hello World!" 10 times. I do not really understand how to get the next thread to run!

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "wrapper.h"
#include <pthread.h>

#define MAX 10


void* HelloMoonFunction(void* tid){

   long t_id;
   t_id = (long)tid;
   sleep(tid);
   printf("%d. Hello Moon! \n", tid+1);

   return NULL;
}


void* HelloWorldFunction(void* tid){

    int value = (int) (intptr_t) tid;
    sleep(value);
    printf("%d. Hello World!\n", value + 1);

    return NULL;
}


int main(int ac, char * argv){

    pthread_t hej,moon;


    while(1){

        for (int a = 0; a < MAX; a++){

             pthread_create(&hej, NULL, HelloWorldFunction, (void*)(intptr_t) a);
        }
        for (int b = 0; b < MAX; b++){

             pthread_join(&hej, NULL);
        }


        for (int i = 0; i < MAX; i++){

             pthread_create(&moon, NULL, HelloMoonFunction, (void*)(intptr_t) i);
        }
        for (int j = 0; j < MAX; j++){

             pthread_join(moon, NULL);
        }  
    }


    pthread_exit(NULL);
    return(0);
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source