亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1647 | 回復(fù): 1
打印 上一主題 下一主題

是不是用多進(jìn)程比多線程快得多? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2004-11-05 09:40 |只看該作者 |倒序?yàn)g覽
是不是用多進(jìn)程比多線程快得多?

在一個(gè)8CPU的AIX上面,直接使用線程比使用進(jìn)程整整慢了三倍

,為什么?
下面thread5直接使用線程,thread6使用進(jìn)程
thread5執(zhí)行時(shí)間為:
開始時(shí)間:Fri Nov  5 08:23:43 CST 2004
結(jié)束時(shí)間:Fri Nov  5 08:25:17 CST 2004

thread6執(zhí)行時(shí)間為:

Fri Nov  5 08:22:43 CST 2004
Fri Nov  5 08:23:11 CST 2004

附上源代碼:

  1. 程序 thread5.c:

  2. #include<pthread.h>;
  3. #include<stdlib.h>;
  4. #include<unistd.h>;
  5. #include<stdio.h>;
  6. /*計(jì)算20000! */
  7. void *fac(void *arg){
  8. int i,j,k,r;
  9. int n;
  10. int data[200000];
  11. int digit;
  12. data[0]=1;
  13. data[1]=1;
  14. digit=1;
  15. n=20000;
  16. for(i=1;i<n+1;i++){
  17. for(j=1;j<digit+1;j++)data[j]*=i;
  18. for(j=1;j<digit+1;j++){
  19. if (data[j]>;=10){
  20. for(r=j;r<digit+1;r++){
  21. if (data[digit]>;=10)
  22. digit++;
  23. data[r+1]+=data[r]/10;
  24. data[r]=data[r]%10;
  25. }
  26. }
  27. }
  28. }
  29. }

  30. int main(void){
  31. system("date");
  32. pthread_t mythread1,mythread2,mythread3;
  33. pthread_create(&mythread1,NULL,fac,NULL);
  34. pthread_create(&mythread2,NULL,fac,NULL);
  35. pthread_create(&mythread3,NULL,fac,NULL);

  36. pthread_join(mythread1,NULL);
  37. pthread_join(mythread2,NULL);
  38. pthread_join(mythread3,NULL);


  39. system("date");
  40. printf("done\n");
  41. exit(0);
  42. }

  43. 程序thread6.c:

  44. #include<pthread.h>;
  45. #include<stdlib.h>;
  46. #include<unistd.h>;
  47. #include<stdio.h>;

  48. void *fac(void *arg){
  49. system("./fac1");
  50. }

  51. int main(void){
  52. system("date");
  53. pthread_t

  54. mythread1,mythread2,mythread3,mythread4,mythread5,mythre

  55. ad6,mythread7,mythread8;
  56. pthread_create(&mythread1,NULL,fac,NULL);
  57. pthread_create(&mythread2,NULL,fac,NULL);
  58. pthread_create(&mythread3,NULL,fac,NULL);

  59. pthread_join(mythread1,NULL);
  60. pthread_join(mythread2,NULL);
  61. pthread_join(mythread3,NULL);


  62. system("date");
  63. printf("done\n");
  64. exit(0);
  65. }

  66. 其中fac1.c為:
  67. //計(jì)算20000!
  68. #include <stdio.h>;
  69. void main(){
  70. int i,j,k,r;
  71. int data[20000000];
  72. int n;
  73. int digit;
  74. for (i=1;i<20000000+1;i++)data[i]=0;

  75. data[0]=1;
  76. data[1]=1;
  77. digit=1;

  78. n=20000;
  79. for(i=1;i<n+1;i++){
  80. for(j=1;j<digit+1;j++)data[j]*=i;
  81. for(j=1;j<digit+1;j++){
  82. if (data[j]>;=10){
  83. for(r=j;r<digit+1;r++){
  84. if (data[digit]>;=10)
  85. digit++;
  86. data[r+1]+=data[r]/10;
  87. data[r]=data[r]%10;
  88. }
  89. }
  90. }
  91. }

  92. }
復(fù)制代碼

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2004-11-05 20:46 |只看該作者

是不是用多進(jìn)程比多線程快得多?

可能的原因:(但不能保證正確)

在多CPU情況下,當(dāng)前不少系統(tǒng)中進(jìn)程可以分配到不同CPU,而細(xì)到線程時(shí)只能將同一進(jìn)程的子線程部署到單個(gè)CPU。這樣,你的多進(jìn)程程序使用了多個(gè)CPU,而多線程程序沒有這個(gè)優(yōu)勢(shì)。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP