40% чего? Предположим, вы профилируете следующий код:
for (i = 0; i < 1000; i++){
sleep(1);
}
Если вы посмотрите только на процессорное время (не на настенные часы), почти все это будет в sleep
.
Почему? Поскольку он использует очень мало процессорного времени вообще, но из процессорного времени, которое он использует , почти все это тратится на вход и выход sleep
.
Конечно, если вы посмотрите на время настенных часов, еще больше будет в sleep
.
То же самое относится к любому блокирующему вызову, как wait
.