swift主线程异步_并发,并行,线程,进程,异步和同步有相关性吗?

本文翻译自:https://medium.com/swift-india/concurrency-parallelism-threads-processes-async-and-sync-related-39fd951bc61d

最近,我的一个朋友问我关于并发和并行性的问题。当我开始向他解释他查询到的答案时,我们开始讨论其他相关概念和术语,例如线程->多线程和单线程,异步和同步。在某一点上,我们对以下查询感到困惑:

  • 并发与并行性有何关系?

  • 什么是同步和异步执行?

  • 同步和异步编程在并发和并行性中的重要性是什么?

  • 线程如何与所有这些概念一起使用?

我们有时也会对这些概念感到困惑。尝试通过查询回答以上问题,并亲自写demo试验。

因此,让我们检查一下您是否掌握正确。我们将分析并了解它们实际上是什么以及它们之间的关系。

一、并发和并行

并发

思考给同时你一个唱歌和进食的任务,在给定的时间情况下,您会唱歌或吃饭,因为这两种情况都涉及您的嘴巴。因此,要执行此操作,您需要先吃一段时间,然后唱歌并重复此操作,直到食物吃完或歌曲结束为止。因此,您可以同时执行任务。

在计算机科学领域,在各种处理器中实现并发的方式不同。在单核环境(即您的处理器具有单核)中,并发是通过称为上下文切换的过程实现的。如果是多核环境,则可以通过并行实现并发。

354c0191ca9466c8f760e6677b68f141.png在单个核心环境中执行任务。任务在上下文之间切换。

并行

考虑给您做两个烹饪任务,并通过电话与您的朋友交谈。您可以同时执行这两件事。您既可以做饭,也可以通过电话讲话。现在,您正在并行执行任务。

并行是指同时执行两个或多个任务。计算机科学中的并行计算是指同时执行多个计算的过程。

swift主线程异步_并发,并行,线程,进程,异步和同步有相关性吗?_第1张图片在同一时间段内同时执行两个任务。

那么并发和并行的关系是什么呢?

  • 并发和并行是指专注于如何执行任务或计算的计算机体系结构。

  • 在单个核心环境中,并发发生于通过上下文切换在相同时间段内执行的任务,即在特定时间段内,仅单个任务被执行。

  • 在多核环境中,并发可以通过并行执行多个任务同时执行来实现

二、线程和进程

线程

操作系统调度的最小单位,程序可以是单线程或多线程。线程是可以相互独立执行的一系列代码执行序列。

进程

资源分配的最小单位,一个程序可以有多个进程。进程通常从单个线程(即主线程)开始,但随后在执行过程中它可以创建多个线程。

swift主线程异步_并发,并行,线程,进程,异步和同步有相关性吗?_第2张图片

应用程序中进程和线程的分布。

三、同步和异步

同步

想象一下你同时写两封信一封给妈妈一封给你最好的朋友,你不能同时写两个字母除非你是专业的人士。

在同步编程模型中,任务一个接一个地执行。每个任务等待任何先前的任务完成,然后执行。

异步

想象你做一个三明治,然后用洗衣机洗衣服。您可以将衣服放在洗衣机中,而无需等待做完,您可以去做三明治。在这里,您异步执行了这两个任务。

在异步编程模型中,当一个任务被执行时,您可以切换到其他任务,而无需等待前一个任务完成。

同步--单线程

2519d857fc92275e0db4edd4bc04659d.png

同步--多线程

0516f97c8b81123391f2eaf780f7f8e7.png

异步--单线程

79dda85801f0b63cc4984acea247ce84.png

异步--多线程

4d67c005d179343da879aa30cb682342.png

同步和异步在并发和并行中的作用是什么

  • 异步编程模型可以帮助我们实现并发。

  • 多线程环境中的异步编程模型是一种实现并行性的方法。

总结

并发和并行

执行任务的方式。

同步和异步

编程模型。

单线程和多线程

任务执行的环境。

你可能感兴趣的:(swift主线程异步)