# The 1 Thread=1 Virtual User Paradigm is flawed
The 1 Thread: 1 Virtual User paradigm is the computing model for load generation that consists of the requests made by one virtual user being executed by a single [[Kernel thread]].
This is sometimes called synchronous processing.
## Disadvantages
- Limited to a few thousand virtual users
- The limitations of this paradigm become apparent after a certain point.
- It's more expensive to create and destroy OS or kernel threads
- Lots of resources are wasted
- When the thread is blocked (such as when a virtual user is executing programmed think time), the entire thread is also idle and cannot do other work
- Sleep method is a waste, and in this paradigm, it's the only way to implement think time
- Blocking I/Os and waiting for messages
- This imposes a hardware ceiling for application performance.
-  [^01]
![[Why Should You Learn Go#^358154]]
## Advantages
- Simplicity
## Load testing tools that do not use this paradigm
- [[Gatling]] uses a message-based architecture. Instead of virtual users, Gatling is focused on the actual requests that are sent, which makes a lot of sense because [[User concurrency is an ambiguous measure of throughput]].
- [[k6 (tool)]]
[^01]: M. Horowitz, F., Labonte, O. Shacham, K. Olukotun, L. Hammond, C. Batten, C. Moore via [[Keval Patel]] on [Medium](https://medium.com/@kevalpatel2106/why-should-you-learn-go-f607681fad65)