使用多线程编程来实现并发时,需要考虑并发所带来的哪些风险呢?

并发与并行分布式系统的一个重要特征就是计算能力是可以并发或者并行的 。
在分布式系统中 , 往往会将一个大任务进行分解 , 而后下发给不同的节点去计算 , 从而节省整个任务的计算时间 。
并发与并行的区别计算机用户很容易认为他们的系统在一段时间内可以做多件事 。比如 , 用户一边用浏览器下载视频文件 , 一边可以继续在浏览器上浏览网页 。可以做这样的事情的软件被称为并发软件(ConcurrentSoftware) 。
计算机能实现多个程序的同时执行 , 主要基于以下因素 。
·资源利用率 。某些情况下 , 程序必须等待其他外部的某个操作完成 , 才能往下继续执行 , 而在等待的过程中 , 该程序无法执行其他任何工作 。因此 , 如果在等待的同时可以运行另外一个程序 , 无疑将提高资源的利用率 。
·公平性 。不同的用户和程序对于计算机上的资源有着同等的使用权 。一种高效的运行方式是粗粒度的时间分片(Time Slicing)使这些用户和程序能共享计算机资源 , 而不是一个程序从头运行到尾 , 然后再启动下一个程序 。
·便利性 。通常来说 , 在计算多个任务时 , 应该编写多个程序 , 每个程序执行一个任务并在必要时相互通信 , 这比只编写一个程序来计算所有任务更加容易实现 。
那么并发与并行到底是如何区别的呢?


    推荐阅读