Async vs Threads

Cluster debates the advantages and use cases of asynchronous programming (async/await) versus traditional threading for concurrency, especially distinguishing I/O-bound from CPU-bound workloads and discussing performance, resource usage, and complexity.

📉 Falling 0.4x Programming Languages
3,848
Comments
20
Years Active
5
Top Authors
#6833
Topic ID

Activity Over Time

2007
1
2008
6
2009
10
2010
72
2011
77
2012
85
2013
109
2014
139
2015
172
2016
236
2017
197
2018
184
2019
251
2020
403
2021
372
2022
336
2023
446
2024
443
2025
305
2026
4

Keywords

e.g erights.org CPU NGINX OK GIL node.js UI DMA E.G async threads await async await asynchronous concurrent cpu synchronous thread threaded

Sample Comments

tom_ Oct 11, 2025 View on HN

You're doing nothing wrong other than using async. You'll only become an async fan once you write a program that does no interesting CPU work, just a lot of I/O - because async is great for the case where the computer spends most of its time waiting around for multiple (or possibly even quite a lot more than that) I/O requests to complete, then does a bit of CPU work on completion of each in order to decide what I/O to do next. Then repeat forever.This stuff is always

bodeadly Jan 29, 2020 View on HN

Async is superior. I have done processes with locks in shared memory. I have done threads. But I predict Async will slowly start to take over. Processes are not suitable for working on shared data. Threads frequently yield race conditions and deadlocks even for experienced coders. But Async doesn't have any of these issues. So why isn't it more popular? For two reasons:1) it completely breaks the functional programming model that we all learned as toddlers (instead of call A and the

miki123211 Jul 5, 2023 View on HN

Async is, in many situations, better than traditional threads.Threads are a resource hog. They take a lot of system resources, and so you usually want to have as few of them as possible. This is a problem for applications that could, in theory, support thousands of concurrent connections, if not more. With a basic thread-based model, you need 1 thread per connection, and if you have long-lived connections with infrequent traffic, those threads mostly do nothing but consume precious system re

lr1970 Jan 23, 2024 View on HN

Threads are for when you COMPUTE a lot, while async/await are for when you WAIT a lot.

amelius Jul 5, 2023 View on HN

Async is great for dealing with I/O but it forgets that the CPU is a resource too.

phyrex Apr 21, 2025 View on HN

It's... faster for IO bound workloads? That's literally the whole point of async

guappa Mar 25, 2024 View on HN

Threads are much much slower than async/await.

woah Aug 20, 2019 View on HN

I find async/await easier to reason about than threads for anything more involved than the 1 request per thread web server use case. This is because you avoid bringing in the abstraction of threads (or green threads) and their communication with one another. You trade syntactical complexity (what color is your function, etc), for semantic complexity (threads, channels, thread safety, lock races).

dehrmann Feb 20, 2022 View on HN

The article actually said "concurrency." In the case of the article, it's being oversold because it's not that much better than the old one thread per request model. Cross-request interactions are rare, so you're more or less writing the same code, only with async, you have to be careful not to accidentally do something CPU-intensive for 50ms, and if your runtime supports multiple cores (so not Ruby or Python), you still have to be careful with race conditions and

amelius Jan 23, 2024 View on HN

Yes, async is easier, but granularity of performance is a real downside. The CPU is a resource too, and needs to be managed more carefully than async can do. There's a reason why people stopped using cooperative multitasking like in Windows 3.1 ...