多线程不交替执行问题
很短的一个程序,运行时发现总是在主线程(main函数)中的打印完成后,才能打印handle函数中的语句,为什么两个线程不是交替执行呢?
#include <stdio.h>
#include <pthread.h>
void handle(void);
int main(void)
{
pthread_t id;
int i;
int ret = 0;
ret = pthread_create(&id,NULL,(void *)handle,NULL);
if(ret !=0)
printf( "thread create err!!\n ");
for(i = 0; i < 1000; i++)
printf( "im main\n ");
pthread_join(id,NULL);
return 0;
}
void handle(void)
{
int i;
for(i=0;i <10;i++)
printf( "im sub thread!!\n ");
}
运行结果:
im main
im main
im main
im main
im main
.
.
.
.
.
im sub thread
im sub thread
im sub thread
.
.
------解决方案--------------------不可以将for(i = 0; i < 1000; i++)
改成usleep(...)吗?
------解决方案--------------------循环太短了吧
2.4内核还是非抢占式的
只有主线程的时间片用完后才会切换cpu
你可以在循环中主动切换cpu,或者使用2.6内核看看
------解决方案--------------------是太快了,你把主线程中加个sleep()就可以看到了。