瞎掰,多线程跟异步没有什么关系。异步方式的调用,就是回调当前程序注册的另外一段程序代码。比如说我写public void BeginAdd(int a, int b, Action<int> callback) { var x = a+b; callback(x); }这个程序方法就是异步调用形式的,在方法里隐藏了这个callback回调的时机。我也可能是实现为public void BeginAdd(int a, int b, Action<int> callback) { var x = a+b; ThreadPool.QueueUserWorkItem(h=> { var y =x + 1; Thread.Sleep(50000); callback(y-1); }); }而在你调用这个Add方法时可能根本不清楚内部是如何实现、如何重构的。在参数定义上,这是异步回调形式。仅此而已。异步回调跟什么多线程,没有直接的联系。只不过,我们的多线程程序设计中,往往喜欢使用异步回调形式而已。
如果你搞不明白程序是什么,就不要谈一个程序到底有几个进程多线程有时候是为了提高效率
即使是单核,线程如果不是非常占用CPU,而是有大量时间都在等待IO读写,那么使用多线程在单核CPU上一样可以提高效率更多的时候是为了不阻塞主线程的UI如果你不能真正的理解线程在CPU里到底是如何切换的,CPU是怎样调度线程执行的,建议还是补一补基础
这些东西可能在高中的时候就学过,而大学里计算机基础中也反复讲过,只不过大部分人认为没什么用,都不去认真学习
瞎掰,多线程跟异步没有什么关系。异步方式的调用,就是回调当前程序注册的另外一段程序代码。比如说我写public void BeginAdd(int a, int b, Action<int> callback)
{
var x = a+b;
callback(x);
}这个程序方法就是异步调用形式的,在方法里隐藏了这个callback回调的时机。我也可能是实现为public void BeginAdd(int a, int b, Action<int> callback)
{
var x = a+b;
ThreadPool.QueueUserWorkItem(h=>
{
var y =x + 1;
Thread.Sleep(50000);
callback(y-1);
});
}而在你调用这个Add方法时可能根本不清楚内部是如何实现、如何重构的。在参数定义上,这是异步回调形式。仅此而已。异步回调跟什么多线程,没有直接的联系。只不过,我们的多线程程序设计中,往往喜欢使用异步回调形式而已。