Всем доброе утро!
Я часто прохожу собеседования, на одном из последних встретил интересную задачу.
Решение выложу после 10 неудачных попыток в комментариях.
Надо определить, что будет выведено на экране. Допустим, у изначального потока
Я часто прохожу собеседования, на одном из последних встретил интересную задачу.
Решение выложу после 10 неудачных попыток в комментариях.
Надо определить, что будет выведено на экране. Допустим, у изначального потока
id
равен 1
, а при смене потока ему можно присвоить любой другой (2
, 3
, 10
, 77
и так далее).
public static async Task<int> GetValue1()
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId); // ?
return await Task.FromResult(100500);
}
public static async Task<int> GetValue2()
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId); // ?
return 500100;
}
public static Task<int> GetValue3()
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId); // ?
return Task.Run(() => 500100);
}
static async Task Main(string[] args)
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId); // 1
var val1 = await GetValue1();
Console.WriteLine(Thread.CurrentThread.ManagedThreadId); // ?
var val2 = await GetValue2();
Console.WriteLine(Thread.CurrentThread.ManagedThreadId); // ?
var val3 = await GetValue3();
Console.WriteLine(Thread.CurrentThread.ManagedThreadId); // ?
}