程序1:
#include <stdio.h>
#include <pthread.h>
#include <sys/types.h>
#include <stdlib.h>
char message[]="hello world!";
void * thread_function(void *arg)
{
printf("thread function is running, argument is %s\n",(char *)arg);
sleep(3);
pthread_exit("thank you for your CPU time! \n");
}
int main()
{
pthread_t a_thread;
void * thread_result;
int ret;
ret = pthread_create(&a_thread,NULL,(void *)thread_function,(void *)message);
if(ret != 0)
{
perror("create thread error");
exit(0);
}
printf("waiting for thread to finish...\n");
ret = pthread_join(a_thread,&thread_result);
if(ret != 0)
{
perror("thread join error");
exit(0);
}
printf("thread joined,it returned %s\n",(char*)thread_result);
printf("message is now %s\n",message);
return 0;
}
终端:
waiting for thread to finish...
thread function is running, argument is hello world!
thread joined,it returned thank you for your CPU time!
message is now hello world!
程序2:
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <errno.h>
int ticket = 10;
void *sell_ticket1(void)
{
while(1)
{
if(ticket > 0)
{
sleep(1);
printf("sell ticket--> chool ticket:%d\n",--ticket);
}
else
{
break;
}
}
return NULL;
}
void *sell_ticket2(void)
{
while(1)
{
if(ticket > 0)
{
sleep(1);
printf("sell ticket--> chool ticket:%d\n",--ticket);
}
else
{
break;
}
}
}
void *sell_ticket3(void)
{
while(1)
{
if(ticket > 0)
{
sleep(1);
printf("sell ticket--> chool ticket:%d\n",--ticket);
}
else
{
break;
}
}
return NULL;
}
int main()
{
int i=0, ret=0;
pthread_t id1,id2,id3;
ret = pthread_create(&id1, NULL, (void*)sell_ticket1, NULL);
ret = pthread_create(&id2, NULL, (void*)sell_ticket1, NULL);
ret = pthread_create(&id3, NULL, (void*)sell_ticket1, NULL);
pthread_join(id1, NULL);
printf("id1 exit!\n");
pthread_join(id2, NULL);
printf("id2 exit!\n");
pthread_join(id3, NULL);
printf("id3 exit!\n");
return 0;
}
终端:
sell ticket--> chool ticket:9
sell ticket--> chool ticket:8
sell ticket--> chool ticket:7
sell ticket--> chool ticket:6
sell ticket--> chool ticket:5
sell ticket--> chool ticket:4
sell ticket--> chool ticket:3
sell ticket--> chool ticket:2
sell ticket--> chool ticket:1
sell ticket--> chool ticket:0
sell ticket--> chool ticket:-1
sell ticket--> chool ticket:-2
id1 exit!
id2 exit!
id3 exit!