Understanding suspend function of Kotlin Coroutines

When we talk about coroutine, Suspend Functions are like its backbone. So it is very important to know what it is before one could really appreciate coroutines in full.

However, to understanding what Suspend Functions is, even after reading from various writing found on the internet, it not that straightforward, especially how could it not block the Thread? How is coroutine really different from Thread?

In the Kotlin official coroutines documentation, it is stated

Basically, coroutines are computations that can be suspended without blocking a thread

Hunting to know BLOCKING vs SUSPENDING

I search for blocking vs suspending and found it in English Language Site

A process is blocked when there is some external reason that it can not be restarted, e.g., an I/O device is unavailable, or a semaphore file is locked. A process is suspended means that the OS has stopped executing it, but that could just be for time-slicing (multitasking). There is no implication that the process can not be resumed immediately.

Neither of these words, especially blocked, are being used the same as in non-computer contexts.

--

--