- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图理解 Async
之间的区别编程和Multi Threaded
编程。在 async
我们说线程接受一个任务(T1)并开始执行它。如果同时另一个任务(T2)出现,它不会等待 T1 完成,相反,它会在 T1 在后台执行时选择第二个任务 T2。
The highlighted part is the most confusing part for me to wrap my head around. So when thread picks up T2, who is executing T1? What is the role of a thread in Operating System context? What does it do exactly?
最佳答案
大概如果 async
编程异步编程意味着它仅意味着当某些事件可能以未严格定义的顺序、周期发生时对计算流进行编程。从这个角度来看,两种机制:线程和 I/O 都是异步的。然而.NET async
机制与它们没有直接关系。本质上,它只是一个框架,以一种模仿同步执行但保持异步语义的形式包装类异步计算。也就是说,它不控制底层操作是异步还是同步(它由操作本身控制),甚至可以成功应用于这两种类型的操作,但与异步操作一起使用它更有利,这可能是为什么开发人员将这种机制与异步编程密切相关。所以你的问题的答案是“这取决于”。在 I/O 绑定(bind)异步操作的情况下,它的 IO 子系统以及 I/O 设备可以在 T2 被拾取并执行时提供 T1 的执行。在 CPU 密集型异步操作的情况下,它可以是另一个线程。如果操作是同步的,它们将一一执行,即同步。
关于c# - 线程在操作系统上下文中的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57236073/
我是一名优秀的程序员,十分优秀!