简单写来
main
int g1,g2;
pthread_create(&thrd1,NULL,(void *)task1,(void*)&g1);
ret=pthread_create(&thrd1,NULL,(void *)task2,(void*)&g2);
pthread_join(thrd2,NULL);
pthread_join(thrd1,NULL);
cleanup(g1,g2);
}
void task1(int *counter)
{while(*counter<5)
{printf("Task1 counter: %d\n",*counter);
(*counter)++;
sleep(1);
}
}
void task2(int* counter)
{while(*counter<5)
{printf("Task2 counter: %d\n",*counter);
(*counter)++;
//sleep(1);此处没有sleep
}
}
void cleanup(int counter1,int counter2)
{printf("total iterations: %d\n",counter1+counter2);}
以上是必要的部分,没有语法错误可以编译。
理论上的结果是:
Task1 counter: 0
Task2 counter: 0
Task2 counter: 1
Task2 counter: 2
Task2 counter: 3
Task1 counter: 1
Task1 counter: 2
Task1 counter: 3
Task1 counter: 4
total iterations: 10
我的ubuntu下gcc编译结果:
Task1 counter: 0
Task2 counter: 0
Task2 counter: 1
Task2 counter: 2
Task2 counter: 3
Task2 counter: 4
total iterations: 6
谁能告诉我为什么task1的后部分的内容为什么不再运行了?sleep一秒怎么没有回去?我的qq563917500。希望结交一下linux多线程编程的朋友,我是作嵌入式的。
|