当前位置: 首页 > 知识库问答 >
问题:

C#中多线程与异步程序的区别

阳凌
2023-03-14

[1]“多线程和异步编程的区别”

共有1个答案

杜英叡
2023-03-14

为了理解异步/并发/多线程,我们需要从最基本的问题开始,以及为什么要给这个问题增加这么多复杂性。

一开始,只有真正的单线程阻塞应用程序。这些都是非常简单的程序,更有可能的是,这些就是您现在正在编写的。

为了解释,我将使用比萨饼屋的类比。

你走进商店,和员工交谈,看看菜单,点一个披萨。

太好了。员工走进商店的后面,把一个比萨饼放在上面,站在烤箱旁边等待比萨饼煮熟。

你记得你妻子不喜欢菠萝。你冲着员工大喊大叫,试图引起他的注意来改变你的订单。没有骰子。他在烤箱里一动也不动(他睡着了)。

他向后面的其他员工喊叫(传递信息),让你做比萨饼。他们把一个放进烤箱里。他站在烤箱旁边睡觉。

你忘了你妻子对培根过敏。你告诉员工A取消披萨。他在里面对厨师大喊大叫,把他叫醒。厨师把比萨饼扔进垃圾箱,把一个犹太比萨饼放进烤箱。他很快又睡着了。

你等着,披萨准备好了,你拿到账单。它的规模很大(雇佣了太多的员工,而且一半的人都在工作中睡觉)。

你记得你妻子这个月实际上不吃肉。你告诉员工,他进去,解决问题。

在员工检查完里面的披萨后。然后他看收据(把这块披萨给鲍勃)。

你可以得到便宜、实惠、反应灵敏的披萨。

 类似资料:
  • 本文向大家介绍C#多线程与异步的区别详解,包括了C#多线程与异步的区别详解的使用技巧和注意事项,需要的朋友参考一下 C#多线程与异步的区别详解 随着拥有多个硬线程 CPU(超线程、双核)的普及,多线程和异步操作等并发程序设计方法也受到了更多的关注和讨论。本文主要是想与各位高手一同探讨一下如何使用并发来最大化程序的性能。 多线程和异步操作的异同 多线程和异步操作两者都可以达到避免调用线程阻塞的目的,

  • 本文向大家介绍科普:多线程与异步的区别,包括了科普:多线程与异步的区别的使用技巧和注意事项,需要的朋友参考一下 随着拥有多个硬线程CPU(超线程、双核)的普及,多线程和异步操作等并发程序设计方法也受到了更多的关注和讨论。本文主要是想与园中各位高手一同探讨一下如何使用并发来最大化程序的性能。   多线程和异步操作的异同   多线程和异步操作两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性

  • 问题内容: 我发现在Python 3.4中,用于多处理/线程的库很少:多处理vs线程与asyncio。 但是我不知道使用哪个,或者是“推荐的”。他们做的是同一件事还是不同?如果是这样,则将哪一个用于什么?我想编写一个在计算机上使用多核的程序。但是我不知道我应该学习哪个图书馆。 问题答案: 它们旨在(略有)不同的目的和/或要求。CPython(典型的主线Python实现)仍然具有全局解释器锁,因此多

  • 我在一个用C语言编写的多线程服务器应用程序上工作,并在嵌入式Linux上执行。一个线程(我称之为通信线程)应该处理所有套接字I/O(发送和接收消息)。依赖于接收到的消息,通信线程将消息发送到另一个线程(例如Thread)。Controller-Thread)处理所需的序列。控制器线程在序列的末尾创建返回消息。此消息被写回通信线程,该线程应该将它们传输到客户端。 这两个线程之间的通信是通过队列实现的

  • 我正在使用来处理通过文件的大量记录。每一行都是一条记录,我将每一行传递给单独的线程进行处理,问题是我必须收集这些处理过的记录以及在处理记录时生成的更多数据,然后在最后的数据收集上应用一些业务逻辑。我将一个通用的传递给所有线程来填充已处理的数据,当我通过visualVM调试它时,我发现(屏幕截图如下)这些线程在等待中花费的时间比在运行中花费的时间多。我想这是因为一个线程在写入时获得了锁。 有没有一种

  • 本文向大家介绍详解C#多线程之线程同步,包括了详解C#多线程之线程同步的使用技巧和注意事项,需要的朋友参考一下 多线程内容大致分两部分,其一是异步操作,可通过专用,线程池,Task,Parallel,PLINQ等,而这里又涉及工作线程与IO线程;其二是线程同步问题,鄙人现在学习与探究的是线程同步问题。 通过学习《CLR via C#》里面的内容,对线程同步形成了脉络较清晰的体系结构,在多线程中实现