Skip to content

Comment on Multi-Core by Defaultparent

Comments

If I’m using threads for each of my tasks, then why do I need async at all? I find mixing async and threads is messy, because it’s hard to take a lock in async code, as that blocks other async code from running. I’m sure this can be done well, but I failed when I tried.

It depends what framework/language you're using.

It's messy in something like Python, but mostly transparent in C#. In C# you effectively are using async/await to provide M-N threading ala. GoLang, it's just different syntax.

OP references the C# method Task.WhenAll so they might be assuming other languages are equally capable.

You can map N-async tasks onto M-threads. This is essentially what Rust does, and if you squint this is how Go works as well.

A go routine is not that different from an async task, except the runtime inserts all the await points for you.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.