Amaliy qism:
main()
{
pthread_t thread1, thread2;
const char *message1 = "Thread 1";
const char *message2 = "Thread 2";
int iret1, iret2;
/* har biri funksiya ishga tushiradigan mustaqil oqim yaratish */
iret1 = pthread_create(&thread1, NULL, print_message_function, (void*) message1);
if(iret1)
{
fprintf(stderr,"Error - pthread_create() return code: %d\n",iret1);
exit(EXIT_FAILURE);
}
iret2 = pthread_create( &thread2, NULL, print_message_function, (void*)
message2);
if(iret2)
{
fprintf(stderr,"Error - pthread_create() return code: %d\n",iret2);
exit(EXIT_FAILURE);
}
printf("pthread_create() for thread 1 returns: %d\n",iret1);
printf("pthread_create() for thread 2 returns: %d\n",iret2);
/* main boshlanishidan oldin barcha oqimlar yakunlanishini kutadi. */
/* Mabodo biz yakunlanmay turib barcha oqimlarni to`xtatish buyrug`ini
bersak jarayon va barcha oqimlar yakunlanmay tugaydi/
/* */
/**/
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
exit(EXIT_SUCCESS);
}
void *print_message_function( void *ptr )
{
char *message;
message = (char *) ptr;
printf("%s \n", message);
}
Kompilyatsiyasi:
C
compiler:
cc
-pthread
pthread1.c
(or
cc
-lpthread
pthread1.c)
yoki
C++ compiler: g++ -pthread pthread1.c (or g++ -lpthread pthread1.c)
GNU kompilyatorida hozirda kommandalar qatori imkoniyati ham mavjud “-pthread”,
eski versiyali kompilyatorlarida “Ipthread” bo`ladi.
Buyuring: ./a.out
Natija:
Thread 1
Thread 2
Thread 1 returns: 0
Thread 2 returns: 0
|