Колдовство

Dec 19, 2018 00:34

Сколько лет занимаюсь программизмом, столько лет наблюдаю, как асинхронность сносит мозг простым людям. Всем все время хочется верить, что от этого есть какая-то большая польза ( Read more... )

Leave a comment

Comments 26

freeborn December 18 2018, 23:41:50 UTC
ладно бы только асинхронность, простые iterable/enumerable на каждом шагу в массивы запихивают.

Reply

permea_kra December 19 2018, 12:13:57 UTC
foreach .. in .. все-таки лучше for (a;b;c). Так что в этом-то определенный смысл есть.

Reply


ext_1405098 December 19 2018, 00:14:24 UTC
Мне один чувак говорил что экономится перформанс потому что не тратится время на переключение процессора

Reply

nivanych December 19 2018, 08:28:42 UTC
При асинхронности экономится перформанс?

Reply

plumqqz December 19 2018, 10:21:40 UTC
Да, но в приведенном примере скорее наоборот.

Reply

nivanych December 19 2018, 10:38:15 UTC
Перефразирую вопрос.
Может быть, я туплю...
Но не могу понять, почему при асинхронности не тратится время на переключение процессора?...
Ну или почему при синхронности обязательно тратится сколько-то заметно больше...

При вменяемой реализации, у синхронности может быть меньше latency, но не особо меньше "пропускная способность".
В очень отдельных случаях, при дофига откатах транзакций, могут быть проблемы.
Но в любом случае, такого быть не должно...

Reply


occuserpens December 19 2018, 01:53:10 UTC
Если каждая запись мэпная, то БД джесонная, небось.

А остальное не понял. После трая в фигурных скобках, надо думать, то, что траится, а в круглых что за фигня? И где catch, что будет если запрос навернется? Какой смысл тогда в t.join()? По-каковски это?

Reply

plumqqz December 19 2018, 10:22:52 UTC
try-with-resources
t, конечно, join-ится категорически неправильно.

Reply

occuserpens December 19 2018, 22:54:46 UTC
А, понял. Но почему так важно автоматически закрывать открытые ресурсы вроде файлов или коннекшнов, все равно не доходит. Как и на сколько это повысит перфоманс большой системы - вопрос тонкий. А для маленькой это и вовсе безразлично.

Обработка прерываний - совсем другое дело, прерывания действительно важны. Но именно это в данном примере полностью игнорируют.

Reply

plumqqz December 19 2018, 22:57:50 UTC
Странный вопрос.
Незакрытый коннекшн - висящий коннекшн. Неснятые блокировки, незавершенные транзакции, неоконченные операции...
В данном случае не прерывания, а исключения.

Reply


w00dy December 19 2018, 14:35:32 UTC
Там всё правильно написано. В join проверяется выполнилась ли таска. Если да, выходим и идёт дальше, если нет - освобождаем поток для других целей. Потом когда таска закончится и получим внешний ивент, всё пробуждается и продолжает выполнение.

Reply

plumqqz December 19 2018, 14:40:58 UTC
В join проверяется выполнилась ли таска.
Нет, join ждет результата (или выбрасывает исключение при ряде условий).

Reply

w00dy December 19 2018, 21:18:27 UTC
Там точно не какие-то зелёные потоки? Ибо выглядит ну очень странно.

Reply

plumqqz December 19 2018, 22:07:57 UTC
Ну не зеленые, но CompletableFuture - довольно забавная тварь.

Reply


Leave a comment

Up