赞
踩
创建3个线程,让这三个线程按顺序执行,每个线程打印一个字母,eg:执行后的结果是ABC ABC......共执行10次
可以给出多种方法,本文给出其中一种方法为:在线程中创建线程
先创建一个线程用来输出A,并在第一个线程中创建第二个线程,用第二个线程输出B,并在第二个线程中创建第三个线程,用第三个线程输出C。
- #include<pthread.h>
- #include<stdio.h>
- #include<unistd.h>
-
- void* myFun1_A(void* arg);
- void* myFun1_B(void* arg);
- void* myFun1_C(void* arg);
-
- int main(int argc, char const *argv[])
- {
- pthread_t tid1;
- pthread_create(&tid1,NULL,myFun1_A,"A");
-
- pthread_join(tid1,NULL);
- //while(1);
-
- return 0;
- }
-
- void* myFun1_A(void* arg)
- {
- while(1)
- {
- char* str=(char*)arg;
- pthread_t tid2;
- pthread_create(&tid2,NULL,myFun1_B,"B");
- pthread_detach(tid2);
- fflush(stdout);
- printf("%s",str);
- //printf("\n");
- sleep(1);
- }
-
- return arg;
- }
-
- void* myFun1_B(void* arg)
- {
- char* str=(char*)arg;
- pthread_t tid3;
- pthread_create(&tid3,NULL,myFun1_C,"C");
- pthread_detach(tid3);
- fflush(stdout);
- printf("%s",str);
- //printf("\n");
- sleep(1);
-
- return 0;
- }
-
- void* myFun1_C(void* arg)
- {
- char* str=(char*)arg;
- fflush(stdout);
- printf("%s\t",str);
- printf("\n");
- sleep(1);
- return 0;
- }
-
代码为循环输出哟! 可以自行加以更改。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。