C program to implement Multithreading-Multithreading in C

C is not a multithreaded language like Java but then you must be thinking how most of the Operating Systems like UNIX, Linux supports multithreading well the answer is POSIX threads usually referred to as pthreads. pthreads is an execution model that exists independently from a language, as well as a parallel execution model. It allows a program to control multiple different flows of work that overlap in time.

Don’t know what is a thread? just read our article Thread Synchronization Program in Java-Multithreading

Let us see a simple example based on pthreads. In this example, we will create a simple thread and run it.

#include<pthread.h> #include<stdio.h>  void *mythread();//thread prototype  int main(){ pthread_t thread; //starting the thread pthread_create(&thread,NULL,mythread,NULL); //waiting for completion pthread_join(thread,NULL);   return 0; }  void *mythread(){ printf("Thread Running"); }


Multithreading in C

Important points to note:

  • the pthread_create() function takes four parameters.
  • The first parameter is the pointer to the thread id.
  • The second argument is a pointer to a pthread_attr_t with parameters for the thread. You can safely just pass NULLmost of the time.
  • The third argument is the function name to call.
  • The fourth argument is function parameters if there are no parameters just pass in NULL.
  • pthread_join is similar to wait() in java it will wait for the completion of the thread.

Now let’s see two threads executing simultaneously.

#include<pthread.h> #include<stdio.h>  void *mythread1();//thread prototype void *mythread2();  int main(){ pthread_t thread[2]; //starting the thread pthread_create(&thread[0],NULL,mythread1,NULL); pthread_create(&thread[1],NULL,mythread2,NULL); //waiting for completion pthread_join(thread[0],NULL); pthread_join(thread[1],NULL);   return 0; }  //thread definition void *mythread1(){ int i; for(i=0;i<5;i++) printf("Thread 1 Running"); } void *mythread2(){ int i; for(i=0;i<5;i++) printf("Thread 2 Running"); }


Multithreading in C

Thank you for reading.

Tweet your queries and feedback to @PsychoCodes or leave a message on our Facebook page. You can also comment your questions below.

Also, don’t forget to subscribe to our Newsletter.

If you like this article, then please share it and help us grow.

Preorder and Postorder Traversal of binary tree in Python
02 September 2018

Binary Tree in Python
02 September 2018

Image Sharpening by High Pass Filter using Python and OpenCV
17 August 2018

Explaining Register variables in C with examples
17 August 2018

C program to generate all combinations of N-Bit Binary String
10 July 2018

Data Autosave System using PHP, MySQL and AJAX
06 July 2018

Понравилась статья? Поделиться с друзьями:
Добавить комментарий