Program:
#include<stdlib.h>
#include<stdio.h>
#include<unistd.h>
#include<pthread.h>
// Pointer Function
void *routine(void *i)
{
printf("\n Test from threads: %s",(char *) i);
sleep(3);
printf("\n Thread Ending");
}
int main()
{
// pthread_t is the data type used to uniquely identify a thread
// it is of 4 byte
pthread_t t1,t2;
/*
int pthread_create(pthread_t *thread, pthread_attr_t *attr,
void *(*start_routine) (void *arg), void *arg);
If successful, pthread_create() returns 0.
If unsuccessful, pthread_create() returns -1
*/
char arg[] = "Thread 1";
// Argument to Pthread: All arguments must be passed by reference and cast to (void *).
pthread_create(&t1, NULL,&routine, (void *) &arg );
char arg2[] = "Thread 2";
pthread_create(&t2, NULL,&routine,(void *) &arg2 );
// The pthread_join() function waits for a thread to terminate, detaches the thread, then
// returns the threads exit status.
// int pthread_join(pthread_t thread, void **retval);
pthread_join(t1,NULL);
pthread_join(t2,NULL);
return 0;
}
Output:
