Разберём на примере. ⏩Вот, полностью асинхронный код:
Console.WriteLine("Start Main"); // Запускаем задачу PrintAsync и спокойно идём дальше var printTask = PrintAsync(); Console.WriteLine("End Main"); // Ждём завершения задачи PrintAsync await printTask;
async Task PrintDelayAsync() { // Ждём 3 секунды, но при этом поток не будет занят await Task.Delay(3000); Console.WriteLine("Print"); }
async Task PrintAsync() { Console.WriteLine("Start PrintAsync"); // Ждём пока метод отработает, но поток не занят await PrintDelayAsync(); Console.WriteLine("End PrintAsync"); }
⏩Весь этот код может выполняться даже одним потоком, при этом в моменты ожидания await этот поток освобождается может выполнять какие-то другие асинхронные задачи из вашего кода, если они у вас будут.
Start Main Start PrintAsync Print 3 Print 2 Print 1 End PrintAsync End Main
⏩То есть суть в чём — запустились сразу 3 задачи, выполнились они не в том порядке, как были запущены, а где меньше задержка, та раньше и выполнилась. При этом, повторюсь, достаточно одного потока, чтобы выполнять этот код. Что очень существенно, когда речь идёт о сильно загруженных программах типа веб-сервера или какого-то обработчика данных реального времени.
Разберём на примере. ⏩Вот, полностью асинхронный код:
Console.WriteLine("Start Main"); // Запускаем задачу PrintAsync и спокойно идём дальше var printTask = PrintAsync(); Console.WriteLine("End Main"); // Ждём завершения задачи PrintAsync await printTask;
async Task PrintDelayAsync() { // Ждём 3 секунды, но при этом поток не будет занят await Task.Delay(3000); Console.WriteLine("Print"); }
async Task PrintAsync() { Console.WriteLine("Start PrintAsync"); // Ждём пока метод отработает, но поток не занят await PrintDelayAsync(); Console.WriteLine("End PrintAsync"); }
⏩Весь этот код может выполняться даже одним потоком, при этом в моменты ожидания await этот поток освобождается может выполнять какие-то другие асинхронные задачи из вашего кода, если они у вас будут.
Start Main Start PrintAsync Print 3 Print 2 Print 1 End PrintAsync End Main
⏩То есть суть в чём — запустились сразу 3 задачи, выполнились они не в том порядке, как были запущены, а где меньше задержка, та раньше и выполнилась. При этом, повторюсь, достаточно одного потока, чтобы выполнять этот код. Что очень существенно, когда речь идёт о сильно загруженных программах типа веб-сервера или какого-то обработчика данных реального времени.
Among the actives, Ascendas REIT sank 0.64 percent, while CapitaLand Integrated Commercial Trust plummeted 1.42 percent, City Developments plunged 1.12 percent, Dairy Farm International tumbled 0.86 percent, DBS Group skidded 0.68 percent, Genting Singapore retreated 0.67 percent, Hongkong Land climbed 1.30 percent, Mapletree Commercial Trust lost 0.47 percent, Mapletree Logistics Trust tanked 0.95 percent, Oversea-Chinese Banking Corporation dropped 0.61 percent, SATS rose 0.24 percent, SembCorp Industries shed 0.54 percent, Singapore Airlines surrendered 0.79 percent, Singapore Exchange slid 0.30 percent, Singapore Press Holdings declined 1.03 percent, Singapore Technologies Engineering dipped 0.26 percent, SingTel advanced 0.81 percent, United Overseas Bank fell 0.39 percent, Wilmar International eased 0.24 percent, Yangzijiang Shipbuilding jumped 1.42 percent and Keppel Corp, Thai Beverage, CapitaLand and Comfort DelGro were unchanged.
What is Telegram?
Telegram’s stand out feature is its encryption scheme that keeps messages and media secure in transit. The scheme is known as MTProto and is based on 256-bit AES encryption, RSA encryption, and Diffie-Hellman key exchange. The result of this complicated and technical-sounding jargon? A messaging service that claims to keep your data safe.Why do we say claims? When dealing with security, you always want to leave room for scrutiny, and a few cryptography experts have criticized the system. Overall, any level of encryption is better than none, but a level of discretion should always be observed with any online connected system, even Telegram.