I have the function display.c :
/* DO NOT EDIT THIS FILE!!!  */
#include <stdio.h>
#include <unistd.h>
#include "display.h"
void display(char *str)
{
    char *p;
    for (p=str; *p; p++)
    {
        write(1, p, 1);
        usleep(100);
    }
}
and display.h is:
/* DO NOT EDIT THIS FILE!!!  */
#ifndef __CEID_OS_DISPLAY_H__
#define __CEID_OS_DISPLAY_H__
void display(char *);
#endif
My task is to use pthreads in order to have the following output:
abcd
abcd
abcd
..
..
Note that I must not edit the file display.c or the file display.c. I have to use mutexes in order to succeed the output that is shown above.
The following block of code is my closest attempt to finally reach the result I want:
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <sys/mman.h>
#include <unistd.h>
#include <pthread.h>
#include "display.h"
pthread_t mythread1;
pthread_t mythread2;
pthread_mutex_t m1, m2;
void *ab(void *arg)
{
    pthread_mutex_lock(&m1);            
    display("ab");      
    pthread_mutex_unlock(&m1);
}    
void *cd(void *arg)
{    
    pthread_mutex_lock(&m1);       
    display("cd\n");            
    pthread_mutex_unlock(&m1);      
}
int main(int argc, char *argv[])
{
    pthread_mutex_init(&m1, NULL);
    pthread_mutex_init(&m2, NULL);  
    int i;
    for(i=0;i<10;i++)
    {     
        pthread_create(&mythread1, NULL, ab, NULL);         
        pthread_create(&mythread2, NULL, cd, NULL);    
    }
    pthread_join(mythread1, NULL);
    pthread_join(mythread2, NULL);   
    pthread_mutex_destroy(&m1);
    pthread_mutex_destroy(&m2);
    return EXIT_SUCCESS;    
}
The output of the code above is something like this:
abcd
abcd
abcd
abcd
ababcd
cd
abcd
abcd
abcd
abcd
As you can see "ab" and "cd\n" are never mixed but every time I run the code the output differs. I want to make sure that every time I run this code the output will be:
abcd
abcd 
abcd
for ten times.
I am really stuck with this since I can't find any solution from the things I already know.
 
     
     
    