多线程编程散记

1.win32线程同步机制包括全局变量、事件、临界区、互斥量和信号量


2.MFC中的线程,是区分为用户界面线程和辅助线程的


3.在Linux中,线程其实是所谓的"轻量级进程"  


4.在Linux中可以用POSIX库函数而不是fork()来创建线程


5.关于pthread的常用函数有pthread_create pthread_exit pthread_join pthread_detach pthread_self 


6.处于detached状态的线程能在自己结束执行的时候回收内存,而不需要其父进程等待其结束再将其内存回收


7.线程间的互斥操作可以用mutex来实现,mutex具有原子性、单一性和非忙等待性,它本身只可能处于两种状态之一:锁定或未锁定


8.线程的撤消  继续运行到取消点才能完成,称为延迟撤消


9.OpenMP是一种面向共享内存以及分布式共享内存的多处理器多线程并行编程语言,是能够被用于显示指导多线程、共享内存并行的应用程序编程接口,它是基于共享内存多处理的系统结构的


10.OpenMP的执行模型采用Fork-Join的形式(Fork创建/唤醒,Join多线程会合),主线程与派生线程并行


11.OpenMP功能由编译指导语句与运行库函数的形式提供,并通过环境变量灵活控制程序运行


12.循环并行化是将for循环中的工作分配到一个线程组中,组中线程分别完成循环中的一部。要求保证两次循环之间不存在数据相关性


13.并行区域编程是使一段代码能在多个线程内部同时执行


14.线程同步机制包括互斥锁和事件通知,前者维护一块代码或一块内存的一致性,后者控制代码执行顺序


15.OpenMP的性能分析包括以下四点:OpenMp本身的开销,负载均衡,局部性,线程同步带来的开销


16.MPI标准定义了一组具有可移植性的编程接口,MPI程序是基于消息传递的并行程序


17.消息传递是并行执行的各个进程具有自己独立的堆栈和代码段,作为互不相关的多个程序独立执行。进程之间的信息交互完全通过显式地调用通信函数来完成


18.基于消息传递的并行程序可以划分为单程序多数据和多程序多数据。前者(SPMD)实际上是运行同样的一个程序而处理不同的数据


19.MPI提供通信接口及其相应的底层软件 MPI的四个基本函数:MPI_Init MPI_Finalize MPI_Comm_Rank MPI_Comm_Size  后两者分别用于标识各个进程和进程组中进程个数


20.MPI点对点通信 通过Send&Recv  消息管理7要素:buf,count,datatype,destination/source,tag,comm,status


21.MPI集群通信,包括一对多,多对一,多对多的进程通信模式   通信操作有同步、广播、聚集、播撒、扩展聚集和播撒、全局交换 聚合操作有规约、扫描


22.通信开销=通信固有延迟+消息传递开销


23.关于计算粒度的选择,当通信成为性能瓶颈的时候,一般来说选取较高的计算粒度


24.消息聚合是指,将小的信息聚合起来一起发送,减少总的通信次数


25.解决负载均衡问题,需要静态负载划分和动态负载划分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值