Hi All,
I ve written a small program to get started off with pthreads. I somehow feel the program doesnt meet the purpose. Please find the code and the output below. Please find my question at the bottom.
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
void *PrintThread1(void *threadid)
{
int i;
for (i=0;i<50;i++)
{
printf("\n%d: Thread1!\n", threadid);
}
}
void *PrintThread2(void *threadid)
{
int i;
for (i=0;i<50;i++)
printf("\n%d: Thread2!\n", threadid);
pthread_exit(NULL);
}
int main(int argc, char *argv[])
{
pthread_t threads, threads1;
int rc, t1=0, t2=1;
printf("Creating thread %d\n", t1);
rc = pthread_create(&threads, NULL, PrintThread1, (void *)t1);
if (rc)
{
printf("ERROR; return code from pthread_create() is %d\n", rc);
exit(-1);
}
printf("Creating thread %d\n", t2);
rc = pthread_create(&threads1, NULL, PrintThread2, (void *)t2);
if (rc)
{
printf("ERROR; return code from pthread_create() is %d\n", rc);
exit(-1);
}
pthread_exit(NULL);
}
Output
--------
0: Thread1! (printed when i=0)
0: Thread1!
...............
...............
0: Thread1! (printed when i=49)
1: Thread2! (printed when i=0)
1: Thread2!
-----------
-----------
1: Thread2! (printed when i=49)
My question is:
If both the threads are running the output from the functions printThread1 and PrintThread2 should be mingled?
i am in HP-UX 10.20
Same program in cygwin environment yields mingled output.
Please help me with this...
raj