2

How do we create multiple thread during runtime in C programming language? If we need to create same amount of thread as specified by the user how do we do it?

1

4 Answers 4

2

On Linux use pthreads

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

void *print_message_function( void *ptr );

int main(int argc, char *argv[])
{
     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);
     pthread_join( thread2, NULL); 

     printf("Thread 1 returns: %d\n",iret1);
     printf("Thread 2 returns: %d\n",iret2);
     exit(0);
}

void *print_message_function( void *ptr )
{
     char *message;
     message = (char *) ptr;
     printf("%s \n", message);
}
Sign up to request clarification or add additional context in comments.

3 Comments

I seems your print_message_function is missing a return statement?
Seems so, but it only issues a warning in gcc
That's because of a technicality in the standard which requires the implementation to attempt to compile and run the program. (Not all implementations follow this requirement, but gcc does exactly follow what the standard says, in this case.) This has to do with not requiring complex control-flow analysis, especially with functions that may not return (e.g. abort(), exit(), terminate(), ...). However, the code is wrong and should definitely be fixed.
2

Check _beginthread for Windows and posix threads for linux

Comments

2
#include<stdio.h>
#include<pthread.h>
#include<unistd.h>
#include<stdlib.h>
void *print()
{
   printf("\nThread Created");
}
int main()
{
    int ch,i;
    pthread_t *t;
    printf("Enter the number of threads you want to create : ");
    scanf("%d",&ch);
    t=(pthread_t *)malloc(ch * sizeof(pthread_t ));
    for(i=0;i<ch;i++)
    {
        pthread_create(&t[i],NULL,print,NULL); //Default Attributes
    }
    for(i=0;i<ch;i++)
    {
        pthread_join(t[i],NULL);
    }
}

This is the most basic code for creating threads during runtime in Linux OS using pthread library.

Comments

1

pthreads

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.