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?
+2
A:
In linux use pthreads
http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *print_message_function( void *ptr );
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);
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);
}
Tom
2010-03-11 13:03:39
I seems your `print_message_function` is missing a return statement?
roe
2010-03-11 13:06:15
Seems so, but it only issues a warning in gcc
Tom
2010-03-11 13:13:34
@Tom: 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.
Roger Pate
2010-03-11 14:50:45