TBB记录2
来源:互联网 发布:淘宝开店法律条款 编辑:程序博客网 时间:2024/06/04 19:43
抢先式调度器:
操作系统限制一个程序使用处理器的时间,当使用时间到了之后,操作系统将强行让另外一个程序来使用这个处理器核。因此,操作系统能够使得邮件程序和网页浏览器看起来是同时运行的。
将一个问题划分到多个进程上,并且在各个进程之间只采用一种受限制的、相互同意的通信方式,这种做法有许多优势。其一:某个进程发生错误,对整个系统的影响减小。
进程线程:进程中所有线程都共享进程的数据。
在编写代码时:
如果代码在没有并发引发的问题的情况下就无法运行,那么这段代码就不能被成为线程安全的(Thread-safe)。
由于多线程程序中,同一个函数以及同一个资源可能被多个控制流并发的使用,因此,多线程程序的代码必须是可冲入的和线程安全的。此时,需要注意线程的中互斥,保证在同一时刻只有一个线程能够执行有着全局操作的代码,二其他线程都被排除在这段代码之外。
C++库中有一些来自C库德函数,在这些函数中存在着需要在多次调用之间维护内部状态的问题,尤其是像asctime,ctime,gtime,localtime,rand和strtok等函数。在使用前应该查看文档,确保他们是线程安全的版本。 C++标准模板库(Standard Template Library)的容器类通常不是线程安全的,(因此,在线程构建模块中定义的一些容器也不是线程安全的)。
相同资源的并发访问:使用互斥和原子操作
不同的并行计算顺序得到的结果会有细微的差别。
避免死锁:避免使用锁,尤其是避免使用多个锁。如果必须使用锁:解决方案1)按照特定的顺序来获得锁(例如,首先A,然后B);2)当无法获得其中一个锁时,释放所有的锁,然后再重新开始。
条件竞争:不会导致程序无法运行,但是会导致程序结果出错,并且不容易被发现。解决方案:严格的方式管理恭喜那个数据,从而确保获得正确的顺序。避免使用基于锁的低级方法,因为这种方法很容易产生错误。锁很容易产生错误,并且较为低级。应该尽可能使用由算法模板和任务调度器实现的同步功能。例如:使用parallel—reduce 而不是使用共享变量。在pralallel_reduce 中的join操作将保证在所有子问题的回合操作完成之后才开始运行。
- TBB记录2
- 关于高性能计算(并行计算)的知识记录汇总(OpenMP、OpenCL、CUDA、TBB)
- TBB入门
- intel tbb
- Intel TBB
- TBB parallel_for
- intel TBB
- c++ tbb
- TBB入门
- TBB介绍
- TBB TBH
- tbb 编译
- TBB基础之parallel_for
- TBB源码阅读计划
- TBB学习笔记一
- TBB使用心得
- linux安装intel tbb
- TBB的环境配置
- 试着、、遗忘
- 花生壳+tomcat+javaweb项目的部署问题
- 加拿大政府正式为IT项目管理的成本估计作出规定
- Shell 的语法学习笔记二
- .net中使用反射的简单例子
- TBB记录2
- php-mysql-create-file
- SIP 成员参加会议过程-8
- ASP.NET 中的默认焦点和响应回车键的问题
- KMP
- HP and AIX上的date问题
- 归并排序
- Delphi多维动态数组重定义长度
- 汉诺塔问题具体解答递归方法