когда поток ждет ресурса - ядро его суспендит, отдавая ресурсы другим приложениям, пока для первого потока этот ресурс не будет доступен (диск/сеть - и т.д.). Работает планировщик. Таким образом полезная работа все равно выполняется. Чем оптимизированнее по ресурсам каждое приложение, тем больше таких приложений могут выполняться одновременно, не мешая друг другу. На пример можно сделать аналогию 1 приложение на PHP = 100 на с++ выполняющих аналогичню работу. Еще аналогия - скайп на моем телефоне или 10 нормальных приложений