-
并发计算 编辑
并发计算(英语:Concurrent computing,或译为并发处理、共时计算),是一种程序计算的形式,在系统中,至少有两个以上的计算在同时运作,计算结果可能同时发生。用来实现并发系统(Concurrent system)的编程语言与各种算法,统称为并发计算。
并发计算是一种程序运算的特性,可以被视为是并行运算的进一步抽象,它包涵了时间片这种可以被用来实现虚拟并行运算(pseudoparallelism)的技术,因此在实际的物理运作中,计算过程可能是并行,或非并行的。
并行计算是指,当并发计算的程序,在机器平台上同时被运行的状况,因此,并行计算是一种机器运算的形式之一。分布式计算(Distributed computing)则是并行计算的一个特例,它采用计算机网络来进行同步。
实现并发程序有许多方式,依编程语言与操作系统的支持,可以用进程,或是线程来实现。它可以运行在单一处理器上,将不同的运行步骤分散在不同时间片中运行,以非并行方式循序运算;它也可以用并行计算来实现,将每个进程指定给处理器组中的某个处理器,以单片机多处理器平台,或是透过网络链接的分散平台来实做。
依照硬件与操作系统的支持,并发计算可以在同一个进程中完成,在同一个进程中以多线程来完成,以多个进程来达成,甚至可以分成数个程序来运行。可以用单处理器的循序计算来实现,也可以采并行计算或分布式计算方式实做。
但以并行方式来运作并发程序,并不必然会增进运行效率。因为运行结果可能会因为平台特性而改变,也增加它在设计上的难度。
并发计算可以增加产出 - 让并发程序以并行方式运行,在某个特定时间内,可以让数个进程同时完成计算任务,增加了产出。
输入/输出的反应时间加快 - 密集进行输入/输出(I/O)操作的应用程序,多数的时间,都在等待输入或输出操作完成。在等待的时间中,并发计算编程可以让另外的进程来运作。
更适当的程序架构 - 某些计算问题或问题的领域,特别适合以并发计算来解决。
共享存储器通信
经由改变共享存储器地址内的数据内容,让不同的并发单元间进行通信,如Java与C#都支持这个方式。使用这种通信类型的并发程序,通常需要应用某种锁定的方式来达成线程间的同步,这些锁定技术包括mutex,semaphore,或monitor等。
消息传递通信
透过消息的交换,使不同的并发单元间同步,如Scala,Erlang与occam。
参与者模式
Petri网
通信顺序进程
很多并发性编程语言更多的是被用作研究(例如:Pict)而非生产用途。尽管如此,在最近20年,还是有很多语言例如 Erlang,Limbo和Occam被用于生产工业。类似这些并发性编程语言还包括:
Ada
Alef
Alice
Ateji PX
Axum
Chapel
Charm++
Cilk
Cω
C#
Clojure
Concurrent Clean
Concurrent Collections
Concurrent Haskell
Concurrent ML
Concurrent Pascal
Curry
D
E
1、本站所有文本、信息、视频文件等,仅代表本站观点或作者本人观点,请网友谨慎参考使用。
2、本站信息均为作者提供和网友推荐收集整理而来,仅供学习和研究使用。
3、对任何由于使用本站内容而引起的诉讼、纠纷,本站不承担任何责任。
4、如有侵犯你版权的,请来信(邮箱:baike52199@gmail.com)指出,核实后,本站将立即删除。