4 ms·
You're supposed to either await a Task, or to block on it (thus blocking the underlying OS thread which probably eats a couple of megabytes of RAM). It's a comp
by 5e92cb50239222b 3y ago
You're supposed to either await a Task, or to block on it (thus blocking the underlying OS thread which probably eats a couple of megabytes of RAM). It's a completely different system more akin to what Go has been using.
- neonsunset 3y agoThis is not necessarily correct. Tasks can be run in a "fire-and-forget" way. Also, only synchronous prelude of the task is executed inline in .NET. The continuation will then be ran on threadpool worker thread (unless you override task scheduler and continuation context). Also, you can create multiple tasks in a method and then await their results later down the execution path when you actually need it, easily achieving concurrency. Green threads is a more limited solution focused first and foremost on solving blocking.
- kaba0 3y agoBut there is no point to it in this comparison if it can block a whole thread to itself - that can be done with java as well since forever.
- neonsunset 3y agoBlocking the thread with unawaited task.Result is an explicit choice which will be flagged by a warning by an IDE and when building, that this may not be what you intended.