网络原题:
编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输
出结果必须按ABC的顺序显示;如:ABCABC….依次递推这里设置ITEM=4,即依次打印ABCDABCD……………………
#include#include #include /*int pthread_create(pthread_t*restrict tidp, * const pthread_attr_t *restrict_attr, * void*(*start_rtn)(void*),void *restrict arg);*//*第一个参数为指向线程标识符的指针。第二个参数用来设置线程属性。第三个参数是线程运行函数的起始地址。最后一个参数是运行函数的参数。*/#define ITEM 4struct { pthread_mutex_t mutex; pthread_cond_t cond; int i;}test={ PTHREAD_MUTEX_INITIALIZER,PTHREAD_COND_INITIALIZER,0};void PrintA(void *arg){ int num=*(int*)arg; int i; //printf("\n线程%d开始工作,我打印的是%c\n",pthread_self(),'A'+num); for(i=0;i<10;i++){ pthread_mutex_lock(&test.mutex); while(test.i!=num) pthread_cond_wait(&test.cond,&test.mutex); printf("%c",'A'+num); test.i=(test.i+1)%ITEM; pthread_mutex_unlock(&test.mutex); pthread_cond_broadcast(&test.cond); } //printf("\n线程%d完成任务\n",pthread_self());}int main(void) { pthread_t t[ITEM]; int i=1; printf("共有%d个线程\n",ITEM); for(i=0;i
运行结果:
共有4个线程ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD