首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

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

2012-03-30 
多线程不交替执行问题很短的一个程序,运行时发现总是在主线程(main函数)中的打印完成后,才能打印handle函

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

热点排行