![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并行程序设计
文章平均质量分 72
笔记
liangchaaaaa
樗栎庸材
展开
-
OpenMP
因为是并行,所以会有i = 0和i = 1交替出现的情况,同时需要用private将j声明成线程私有变量,因为i = 0时的j和i = 1时的j不一样。比如在斐波那契数列,算了前面的才能算后面的,但是parallel for会把n次迭代分配好后同时开始算,并不会等计算下标在前的数的线程算好后再算。j = 6,9为一个线程,j = 8,7为一个线程,不需要private声明,开启并行区域时,两个线程的i索引都相同,用的是同一层i下的j。对私有变量的终结操作,把私有变量(最后的循环迭代)拷贝到同名串行变量中。原创 2023-07-30 12:05:25 · 494 阅读 · 0 评论 -
实验二 编写Pthreads程序实现“任务队列”
编写一个Pthreads程序实现一个“任务队列”。主线程启动用户指定数量的线程,这些线程进入条件等待状态。主线程生成一些任务(一定计算量),每生成一个新的任务,就用条件变量唤醒一个线程,当这个唤醒线程执行完任务时,回到条件等待状态。当主线程生成完所有任务,设置全局变量表示再没有要生成的任务了,并用一个广播唤醒所有线程。为了清晰起见,建议任务采用链表操作可以自己手动改 Gen_work函数中的循环次数以改变任务计算量。原创 2023-07-16 19:45:00 · 284 阅读 · 0 评论 -
实验一:编写Pthreads程序实现直方图统计
1.实现直方图统计必定会有大量的IO操作,当数据规模很大时,IO会耗费大量时间并且占据整个终端屏幕,影响我们观察数据。因此,在加大数据规模评估性能的时候,把Print_histo函数注释掉即可2.自身电脑实验环境为12核处理机,2.70GHz,机带RAM为16.0GB3.实现直方图统计的数据规模为1000,评估性能数据规模为10000000。均为将【0,100】分为10个区间。原创 2023-07-11 15:38:01 · 219 阅读 · 0 评论 -
基于Pthreads多线程程序设计
函数原型:int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);功能说明:创建一个线程。参数说明thread:线程句柄,需要先定义一个 pthread_t 类型变量 thread,将该变量的地址 &thread 传递到该参数中去。这是一个传出参数,传递进去的 thread 会得到系统为我们创建好的线程句柄。attr:attr可以。原创 2023-07-09 16:36:39 · 641 阅读 · 0 评论