Creating a simple thread in Linux using pthread library api’s

 $ vim simple-linux-thread-using-pthread.c 
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

void *functioncalledbythread(void *arg) {
	int count = 0, i;
	int *passed_value = (int*)arg;
	printf("Value passed to thread from main : %d \n", *passed_value);

	for(i=0; i<10; i++) {
		count++;
		sleep(1);
	}
	return NULL; 
}

int main(int argc, char **argv) {
	int retval;
	pthread_t threadId;
	int pass_this_val = 5;

	printf("Creating simple thread\n");
	if((retval = pthread_create(&threadId, NULL, &functioncalledbythread, (void *)&pass_this_val))) {
		printf("Thread creation failed: %d\n", retval);
	}

	printf("Waiting in main for thread to finish\n");
	/* Wait till threads are complete before main continues.*/
	pthread_join(threadId, NULL);

	printf("Thread execution finished, exiting from main program\n");
	exit(0);
}
 $ gcc -o simple-linux-thread-using-pthread simple-linux-thread-using-pthread.c -lpthread 
 $ $ ./simple-linux-thread-using-pthread Creating simple thread
Waiting in main for thread to finish
Value passed to thread from main : 5 
Thread execution finished, exiting from main program
Android Android Commands Android Java Applications Application Libraries Bash / Shell Scripts Bluetooth driver Build Frameworks Commands and Packages Core Kernel C Programs Development Environment Setup Documents / Books Errors & Failures File Systems Framebuffer / Display Driver git Go Language Programs Hardware Platforms Home JAVA Programs Kernel & Device Drivers Kernel Booting and Porting Linux, OS Concepts and Networking Linux Device Drivers Linux Host, Ubuntu, SysAdmin Linux Kernel Linux Networking Middleware Libraries, HAL NDK / Middleware / HAL Network Driver OS Concepts PHP Procfs Filesystem Programming Languages RaspberryPi Scripting and Automation Search Engine Optimisation ( SEO ) Socurce Code Management ( SCM ) System Administration, Security Testing and Debugging Uncategorized Userspace Utilities Web design and development Wordpress Yocto / Bitbake / Openembedded

Leave a Reply