编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。

来源:互联网 发布:sql 2005 sp4 x86 编辑:程序博客网 时间:2024/04/26 20:05
#include <stdio.h>#include <pthread.h>#include <unistd.h>#include <errno.h>int ticket = 30;void *thread1(void){    while(1)    {        if(ticket > 0)        {            //sleep(1);            printf("A");            ticket--;            sleep(1);        }        else        {            break;        }    }    return NULL;}void *thread2(void){    while(1)    {            if(ticket > 0)            {              //sleep(1);              printf("B");              ticket--;              sleep(1);            }            else            {                break;            }    }    return NULL;}void *thread3(void){    while(1)    {            if(ticket > 0)            {              //sleep(1);              printf("C");              ticket--;              sleep(1);            }            else            {                break;            }    }    return NULL;}int main(){    int i=0, ret=0;    pthread_t id1,id2,id3;    ret = pthread_create(&id1, NULL, (void*)thread1, NULL);    ret = pthread_create(&id2, NULL, (void*)thread2, NULL);    ret = pthread_create(&id3, NULL, (void*)thread3, 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;}
0 0
原创粉丝点击