#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#define NUM_THREADS 10
pthread_t tid[ NUM_THREADS] ;
void * runner( void * param) ;
int main( int argc, char * argv[ ] )
{
long i;
pthread_attr_t attr;
printf ( "I am the parent thread\n " ) ; printf ( "I am rayan : %s %d \n " , argv
[ 1 ] , argc
) ;
/* get the default attributes */
pthread_attr_init( & attr) ;
/* set the scheduling algorithm to PROCESS(PCS) or SYSTEM(SCS) */
pthread_attr_setscope( & attr, PTHREAD_SCOPE_SYSTEM) ;
/* set the scheduling policy - FIFO, RT, or OTHER */
pthread_attr_setschedpolicy( & attr, SCHED_OTHER) ;
/* create the threads */
for ( i = 0 ; i < NUM_THREADS; i++ )
pthread_create( & tid[ i] ,& attr, runner, ( void * ) i) ;
/* now join on each thread */
for ( i = 0 ; i < NUM_THREADS; i++ )
pthread_join( tid[ i] , NULL) ;
printf ( "I am the parent thread again\n " ) ;
/* comment the following line if you compile for Linux */
// system("PAUSE");
return 0 ;
}
/* Each thread will begin control in this function */
void * runner( void * param)
{
long id;
id = ( long ) param;
printf ( "I am thread #%d, My ID #%lu\n " , id
, tid
[ id
] ) ; pthread_exit( 0 ) ;
}
I2luY2x1ZGUgPHB0aHJlYWQuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCiNkZWZpbmUgTlVNX1RIUkVBRFMgMTAKCnB0aHJlYWRfdCB0aWRbTlVNX1RIUkVBRFNdOwp2b2lkICpydW5uZXIodm9pZCAqcGFyYW0pOwoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewogICAgbG9uZyBpOwogICAgcHRocmVhZF9hdHRyX3QgYXR0cjsKICAgIAogICAgcHJpbnRmKCJJIGFtIHRoZSBwYXJlbnQgdGhyZWFkXG4iKTsKICAgIHByaW50ZigiSSBhbSByYXlhbiA6ICVzICVkIFxuIixhcmd2WzFdLCBhcmdjKTsKCiAgICAvKiBnZXQgdGhlIGRlZmF1bHQgYXR0cmlidXRlcyAqLwogICAgcHRocmVhZF9hdHRyX2luaXQoJmF0dHIpOwoKICAgIC8qIHNldCB0aGUgc2NoZWR1bGluZyBhbGdvcml0aG0gdG8gUFJPQ0VTUyhQQ1MpIG9yIFNZU1RFTShTQ1MpICovCiAgICBwdGhyZWFkX2F0dHJfc2V0c2NvcGUoJmF0dHIsIFBUSFJFQURfU0NPUEVfU1lTVEVNKTsKCiAgICAvKiBzZXQgdGhlIHNjaGVkdWxpbmcgcG9saWN5IC0gRklGTywgUlQsIG9yIE9USEVSICovCiAgICBwdGhyZWFkX2F0dHJfc2V0c2NoZWRwb2xpY3koJmF0dHIsIFNDSEVEX09USEVSKTsKCiAgICAvKiBjcmVhdGUgdGhlIHRocmVhZHMgKi8KICAgIGZvciAoaSA9IDA7IGkgPCBOVU1fVEhSRUFEUzsgaSsrKQogICAgICAgIHB0aHJlYWRfY3JlYXRlKCZ0aWRbaV0sJmF0dHIscnVubmVyLCh2b2lkICopIGkpOwoKICAgIC8qIG5vdyBqb2luIG9uIGVhY2ggdGhyZWFkICovCiAgICBmb3IgKGkgPSAwOyBpIDwgTlVNX1RIUkVBRFM7IGkrKykKICAgICAgICBwdGhyZWFkX2pvaW4odGlkW2ldLCBOVUxMKTsKICAgICAgICAKICAgIHByaW50ZigiSSBhbSB0aGUgcGFyZW50IHRocmVhZCBhZ2FpblxuIik7CgogICAgLyogY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmUgaWYgeW91IGNvbXBpbGUgZm9yIExpbnV4ICovCi8vICAgIHN5c3RlbSgiUEFVU0UiKTsKICAgIHJldHVybiAwOwp9CgovKiBFYWNoIHRocmVhZCB3aWxsIGJlZ2luIGNvbnRyb2wgaW4gdGhpcyBmdW5jdGlvbiAqLwp2b2lkICpydW5uZXIodm9pZCAqcGFyYW0pCnsgCiAgICBsb25nIGlkOwogICAgaWQgPSAobG9uZykgcGFyYW07CiAgICBwcmludGYoIkkgYW0gdGhyZWFkICMlZCwgTXkgSUQgIyVsdVxuIiwgaWQsIHRpZFtpZF0pOwogICAgcHRocmVhZF9leGl0KDApOwp9
stdout
I am the parent thread
I am rayan : (null) 1
I am thread #6, My ID #47616978077440
I am thread #7, My ID #47616981378816
I am thread #8, My ID #47616983480064
I am thread #9, My ID #47616985581312
I am thread #5, My ID #47616975976192
I am thread #4, My ID #47616973874944
I am thread #3, My ID #47616971773696
I am thread #2, My ID #47616969672448
I am thread #1, My ID #47616967571200
I am thread #0, My ID #47616965469952
I am the parent thread again