导航:首页 > 信息技术 > 并行编程技术是什么意思

并行编程技术是什么意思

发布时间:2023-01-01 03:51:23

① 并行技术的介绍

并行技术可分为三类,分别是线程库、消息传递库和编译器支持。线程库可实现对线程的显性控制;如果需要对线程进行精细管理,可以考虑使用这些显性线程技术。借助消息传递库,应用程序可同时利用多台计算机,它们彼此间不必共享同一内存空间。MPI 广泛应用于科学计算领域。第三项技术是在编译器中实现的线程处理支持,采用的形式自动并行化。一旦将线程处理引入到应用程序中,开发人员就可能要面对一系列新的编程缺陷(Bug)。其中许多缺陷是难以检测到的,需要付出额外的时间和关注以确保程序的正确运行。并行技术可以分为多进程编程和多线程编程。人们总会用某种IPC(inter-process communication,进程间通信)的形式来实现进程间同步,如管道(pipes),信号量(semaphores),信息队列(message queues),或者共享存储(shared memory)。在所有的这些IPC形式中,共享存储器是最快的(除了门(doors)之外)。在处理进程间资源管理,IPC和同步时,你可以选择 POSIX或者System V的定义。

② 什么是顺序程序设计和并行程序设计

简单的理解,顺序就是依次执行工作,并行是同步执行一定量的工作

③ 并行处理技术的并行处理技术-概念

并行性是指在同一时刻或同一时间间隔内完成两种或两种以上性质相同或不相同的工作,只要在时间上互相重叠,都存在并行性。计算机系统中的并行性可从不同的层次上实现,从低到高大致可分为:
(1)指令内部的并行:是指指令执行中的各个微操作尽可能实现并行操作。
(2)指令间的并行:是指两条或多条指令的执行是并行进行的。
(3)任务处理的并行:是指将程序分解成可以并行处理的多个处理任务,而使两个或多个任务并行处理。
(4)作业处理的并行:是指并行处理两个或多个作业。如多道程序设计、分时系统等。另外,从数据处理上,也有从低到高的并行层次。
(5)字串位并:同时对一个二进制字的所有位进行操作。
(6)字并位串:同时对多个字的同一位进行操作。
(7)全并行:同时对许多字的所有位进行操作。

④ 并行编程(Future)

说到并行,常见的几种模式 “回调驱动(多线程环境下)”、“消息/事件驱动(Actor模型中)。
回调是最常见的异步并发模式,它有即时性高、接口设计简单等有点。但相对于Future,其缺点也非常明显。
首先,多线程环境下的回调一般是在触发回调的模块线程中执行的,这就意味着编写回调方法时通常必须考虑线程互斥问题
其次,回调方式接口的提供者在本模块的线程中执行用户应用的回调也是相对不安全的,因为你无法确定它会花费多长时间或出现什么异常,从而可能间接导致本模块的即时性和可靠性受影响;
再者,使用回调接口不利于顺序流程的开发,因为回调方法的执行是孤立的,要与正常流程汇合是比较困难的。因此回调接口适合于在回调中只需要完成简单任务,并且不必与其它流程汇合的场景。

Future对象本身可以看作是一个显式的引用,一个对异步处理结果的引用,可以通过调用Future.isDone()判断引用的对象是否就绪,并采取不同的处理;而后一种情况则只需调用get()或
get(long timeout, TimeUnit unit)通过同步阻塞方式等待对象就绪。实际运行期是阻塞还是立即返回就取决于get()的调用时机和对象就绪的先后了.

除了上面提到的基础形态之外,Future还有丰富的衍生变化,这里就列举几个常见的。

与一般的Future不同,Lazy Future在创建之初不会主动开始准备引用的对象,而是等到请求对象时才开始相应的工作。因此,Lazy Future本身并不是为了实现并发,而是以节约不必要的运算资源为出发点,效果上与Lambda/Closure类似。例如设计某些API时,你可能需要返回一组信息,而其中某些信息的计算可能会耗费可观的资源。但调用者不一定都关心所有的这些信息,因此将那些需要耗费较多资源的对象以Lazy Future的形式提供,可以在调用者不需要用到特定的信息时节省资源。

另外Lazy Future也可以用于避免过早的获取或锁定资源而产生的不必要的互斥。

Promise可以看作是Future的一个特殊分支,常见的Future一般是由服务调用者直接触发异步处理流程,比如调用服务时立即触发处理或 Lazy Future的取值时触发处理。但Promise则用于显式表示那些异步流程并不直接由服务调用者触发的情景。例如Future接口的定时控制,其异步流程不是由调用者,而是由系统时钟触发,再比如淘宝的分布式订阅框架提供的Future式订阅接口,其等待数据的可用性不是由订阅者决定,而在于发布者何时发布或更新数据。因此,相对于标准的Future,Promise接口一般会多出一个set()或fulfill()接口。

常规的Future是一次性的,也就是说当你获得了异步的处理结果后,Future对象本身就失去意义了。但经过特殊设计的Future也可以实现复用,这对于可多次变更的数据显得非常有用。例如前面提到的淘宝分布式订阅框架所提供的Future式接口,它允许多次调用waitNext()方法(相当于Future.get()),每次调用时是否阻塞取决于在上次调用后是否又有数据发布,如果尚无更新,则阻塞直到下一次的数据发布。这样设计的好处是,接口的使用者可以在其任何合适的时机,或者直接简单的在独立的线程中通过一个无限循环响应订阅数据的变化,同时还可兼顾其它定时任务,甚至同时等待多个Future。简化的例子如下:

for (;;) {
schele = getNextScheledTaskTime();
while(schele > now()) {
try {
data = subscription.waitNext(schele - now());
processData(data);
} catch(Exception e) {...}
}
doScheledTask();
}

【原文来自: http://www.cnblogs.com/uptownBoy/articles/1772483.html 】

阅读全文

与并行编程技术是什么意思相关的资料

热点内容
c语言如何查找源程序 浏览:373
吉客优品代理怎么做 浏览:967
plc程序sftl什么意思 浏览:763
标普技术进展如何 浏览:356
代理服务行业的账怎么做 浏览:53
欧盟农产品标准怎么查看 浏览:854
什么情况下可以不使用实质性程序 浏览:123
短期交易用英语怎么说 浏览:464
客房入住信息多久消失 浏览:510
别人问我产品真假怎么回答 浏览:545
怎么做代理油漆 浏览:632
彩妆属于什么产品大类 浏览:281
泉州货运代理进口食品价格多少 浏览:71
头条为什么没有房产信息 浏览:59
qq飞车手游赛车数据怎么查看 浏览:676
二手房交易后银行多久清算 浏览:528
义乌外企税务代理多少钱一个月 浏览:801
宁夏资质化工产品有哪些 浏览:836
纳米技术与技术的简称是什么 浏览:987
汽修厂如何做代理 浏览:731