现在的位置: 首页 > 综合 > 正文

windows和linux下的线程比较

2014年01月30日 ⁄ 综合 ⁄ 共 1014字 ⁄ 字号 评论关闭

  windows   xp中执行如下代码,执行结果为:672毫秒左右  
  我的是windows  
xp,release版,优化为最快速度  
   
  #include <windows.h>  
  #include
<stdio.h>  
   
   
  DWORD WINAPI ThreadFunc(   LPVOID   param   )  
  {  
  return   0;  
  }  
   
   
  int
main()  
  {  
  HANDLE hThread;  
  int i;  
  DWORD dwBegin,  
dwEnd;  
  dwBegin   =   GetTickCount();  
  for   (   i   =   0;   i  
<   10000;   ++i   )   {  
  hThread   =   CreateThread(   NULL,   0,  
ThreadFunc,   NULL,   0,   NULL   );  
  WaitForSingleObject(   hThread,  
INFINITE   );  
  CloseHandle(   hThread   );  
  }  
  dwEnd   =  
GetTickCount();  
  printf(   "time=%d/n",   dwEnd   -   dwBegin   );  

  return   0;  
  }  
   
   
 
Linux(2.6内核,NPTL线程,我的是FC6)中执行以下代码,执行结果为:275毫秒左右  
   
  #include
<pthread.h>  
  #include <stdio.h>  
  #include
<sys/time.h>  
   
  void* ThreadFunc(   void   *param   )  
 
{  
  return   NULL;  
  }  
   
  int main()  
  {  
 
int i;  
  struct timeval tv1,   tv2;  
  pthread_t   tid;  
   

  gettimeofday(   &tv1,   NULL   );  
  for   (   i   =   0;   i  
<   10000;   i++   )   {  
  pthread_create(   &tid,   NULL,  
ThreadFunc,   NULL   );  
  pthread_join(   tid,   NULL   );  
  }  

  gettimeofday(   &tv2,   NULL   );  
  printf(   "time=%d/n",  
(tv2.tv_sec-tv1.tv_sec)*1000   +   tv2.tv_usec/1000-tv1.tv_usec/1000   );  

  return   0;  
  }

抱歉!评论已关闭.