pai 0.1.11

Process Analyzer and Instrumenter
Documentation
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>

void *print_message_function(void* ptr);

int main() {
	pthread_t thread1, thread2;
	char *message1 = "Thread 1";
	char *message2 = "Thread 2";
	int  iret1, iret2;

	/* Create independent threads each of which will execute function */

	iret1 = pthread_create(&thread1, NULL, print_message_function, (void*) message1);
	iret2 = pthread_create(&thread2, NULL, print_message_function, (void*) message2);

	/* Wait till threads are complete before main continues. Unless we  */
	/* wait we run the risk of executing an exit which will terminate   */
	/* the process and all threads before the threads have completed.   */

	pthread_join( thread1, NULL);
	printf("Thread 1 returns: %d\n",iret1);

	pthread_join( thread2, NULL); 
	printf("Thread 2 returns: %d\n",iret2);
	exit(0);
}

void *print_message_function(void *ptr) {
	char *message = (char *) ptr;
	int i;
	for(i = 0; i < 5; i++) {
		printf("[%i]: %s \n", i, message);
		usleep(1000 * 100);
	}
	return NULL;
}