读书人

多线程不交替执行有关问题

发布时间: 2012-03-30 17:32:09 作者: rapoo

多线程不交替执行问题
很短的一个程序,运行时发现总是在主线程(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()就可以看到了。

读书人网 >UNIXLINUX

热点推荐