yub*_*lee 11 c# multithreading asynchronous
我最初在Stackoverflow和谷歌搜索了类似的问题.只有一个链接给了一些点,但我无法理解清楚.[ 1 ]
以下问题困扰着我:
在异步编程中,什么是真正的Callback方法?代表?
异步程序的实现是使用多线程?
如果提供图形解释,我将非常感激
[ 1 ] "多线程和异步编程之间的区别"
要理解异步/并发/多线程,我们需要从最基本的开始,以及为什么我们给问题增加了如此多的复杂性。
一开始只有真正的单线程阻塞应用程序。这些都是非常简单的程序,而且很可能就是您现在正在编写的程序。
为了解释,我将使用比萨饼屋的类比。
想象一下,您的计算机是一个只有一名员工的披萨屋。他只接受过基础训练。
您走进商店,与员工交谈,查看菜单并订购比萨饼。
伟大的。员工走进商店的后面,把一个比萨放在上面,站在烤箱旁边等待比萨烤好。
你记得你妻子不喜欢菠萝。您对试图引起他注意以更改您的订单的员工大喊大叫。没有骰子。他不会离开烤箱(他睡着了)。
你生气然后离开。
你去下一家披萨店。
它有4名员工。
您走进商店,与员工交谈,查看菜单并订购比萨饼。
他向后面的其他员工大喊(发送消息)让你做披萨。他们把一个放进烤箱。他站在烤箱旁边,睡着了。
你忘记了你的妻子对培根过敏。您告诉员工 A 取消披萨。他在里面对厨师大喊大叫,把他叫醒。厨师将比萨扔进垃圾箱,然后将犹太比萨放入烤箱。他很快又睡着了。
你等一下,披萨做好了,你会收到一张账单。它的规模很大(雇用太多员工,其中一半人在工作中睡觉)。
你去下一家披萨店。
它有1名员工。
您走进商店,与员工交谈,查看菜单并订购比萨饼。
他走进去,把披萨放进烤箱。然后他将收据(回调)附加到披萨上。他走回柜台。
你记得你妻子这个月实际上不吃肉。你告诉员工,他进去解决问题。
在员工检查里面是否有做好的披萨之后。然后他阅读收据(把这个披萨给鲍勃)。
你得到便宜实惠且反应灵敏的比萨饼。
1)回调基本上是传递给过程的委托,该过程将在某个适当的点“回调”。例如,在异步调用(例如 WebRequest.BeginGetResponse 或 WCF BeginXxx 操作)中,您将传递 AsyncCallback。工作线程将“回调”您作为 AsyncCallback 传入的任何方法,在本例中,当它完成时,让您知道它已完成并获取结果。
2)多线程是程序运行的不同部分,通常称为线程。
异步编程使用线程来启动一段代码。所以异步编程依赖于多线程来工作。参考以下链接: