> Усе, що йдеться далі - пишеться в асинхронному стилі
так, оце і є "CPS is contagious". Але якраз якщо ми не змушені всі blocking operations переписувати в реактив, то тоді не "Усе, що йдеться далі".
public void blah(@Suspended AsyncResponse response) {
...
client.rx().get("/slow").whenCompleteAsync((r, th) -> { // так, в цьому місці асинхрон
...
try(DBConn conn = pool.borrow()) { // але в цьому нам нормально і без асинхрону
...
}
response.resume("hello world");
}, myExecutor);
}
> в non-blocking IO немає проблем з насиченим thread pool та нудною оптимізацією його розміру, підтримкою переліку тасків, що виконуються, і ще купою дрібничок
а от якраз перелік тасків, що виконуються, є проблемою асинхрону :) а насичення thread pool - це ніщо в порівнянні з необмеженим ростом задач, загубленим continuation та боротьбою із error propagation та resource management.
щодо нудної оптимізації розміру - так, вона нудна, але це підлягає автоматизації.
> а різниця в throughput - ... - раза в два-три
цікаво. я такого ще не бачив. а в порівнянні з чим?
no subject
так, оце і є "CPS is contagious". Але якраз якщо ми не змушені всі blocking operations переписувати в реактив, то тоді не "Усе, що йдеться далі".
> в non-blocking IO немає проблем з насиченим thread pool та нудною оптимізацією його розміру, підтримкою переліку тасків, що виконуються, і ще купою дрібничок
а от якраз перелік тасків, що виконуються, є проблемою асинхрону :) а насичення thread pool - це ніщо в порівнянні з необмеженим ростом задач, загубленим continuation та боротьбою із error propagation та resource management.
щодо нудної оптимізації розміру - так, вона нудна, але це підлягає автоматизації.
> а різниця в throughput - ... - раза в два-три
цікаво. я такого ще не бачив. а в порівнянні з чим?