我想学习如何为某些同步程序添加并发性,并以Fibonacci算法为例.我写了这些代码,但我发现它根本没有任何并发性.所有代码都在一个线程中运行,直到完成.任何人都可以向我解释为什么它不反映异步?
async static Task<int> Fibonacci(int n)
{
if (n == 0) { return 0; }
else if (n == 1) { return 1; }
else
{
var t1 = Fibonacci(n - 1);
var t2 = Fibonacci(n - 2);
return (await t1) + (await t2);
}
}
static int Main(string[] args)
{
var fib = Fibonacci(25);
fib.Wait();
Console.WriteLine( fib.Result );
Console.ReadKey();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在迈克尔的提示下,我尝试在异步函数中创建任务,它可以工作.但我注意到异步函数返回一个Task类型值,它与Task.Run()相同.这两个任务都会立即运行,但t1不会自动运行到新线程中.所以任何人都可以告诉我,这两项任务之间有什么不同.我可以让异步函数自动运行到新线程吗?
async static Task<string> Async1()
{
return DateTime.Now.ToString();
}
static void Main(string[] args)
{
Task<string> …Run Code Online (Sandbox Code Playgroud)