摘要:
现代的线程库允许不同的线程运行在不同的处理器芯片上,从而实现真正意义上的并行。换句话说,如果你的机子是单核的,用多线程也没不会提高执行效率。我的电脑是多核的,并行计算耗时0.56秒,但按照常规的串行计算方法只需要0.07秒。分析一下原因,在我的程序里计算200×300和300×200的两个矩阵的乘积,分了300个子线程去分头完成。线程数太多,每个线程的工作量太小,CPU把时间都花在线程调度上了,所以并行的结果反而还不如串行。并行程序代码:#include<stdio.h>#include<time.h>#include<pthread.h> 阅读全文
摘要:
C动态创建和释放二维数组#include<stdio.h>#include<stdlib.h>#define ROW 5#define COL 4main(){ int i; int **arr; arr=(int **)malloc(ROW*sizeof(int*)); for(i=0;i<ROW;++i) arr[i]=(int*)malloc(COL*sizeof(int)); printf("%d\n",arr[ROW-1][COL-1]); for(i=0;i<ROW;++i) free(arr[i]); free(arr);} 阅读全文