Size: a a a

Clojure — русскоговорящее сообщество

2019 November 05

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
Andrew Rudenko
Все конеекторы мало мальски активные полностью асинхронные в ноде
Я вообще про libuv говорил. Но в ноде, может, всё асинхронно пишут, конечно.
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Ну пиши тогда что коннект к твоей базе через собственный си драйвер синхронный, ок
источник

AK

Anton Korotkikh in Clojure — русскоговорящее сообщество
Azamat Kalimoulline
Ну тогда чтобы совсем упростить. Я написал БД и написал к нему драйвер, который точно синхронный.
это нужно постараться, вся стдлиба асинхронная. есть конечно вариант DB2 прийти со совим блокирующим плюсовым костылём, но хорошо, что так больше никто не делает
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Azamat Kalimoulline
Я вообще про libuv говорил. Но в ноде, может, всё асинхронно пишут, конечно.
Либув дает ноде асинхронный интерфейс, который используют все нода драйверы
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Нативные или сишные не важно
источник

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
Ну тогда чтобы понятно было давайте тогда совсем отойдём от БД. Будет у нас операция sleep какая-нибудь.
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Все таймеры в ноде асинхронные и не блокирующие
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
И тоже на libuv, да
источник

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
А мы не используем таймеры, мы просто sleep делаем.
источник

Д

Диёр in Clojure — русскоговорящее сообщество
Andrew Rudenko
Все таймеры в ноде асинхронные и не блокирующие
Есть блокирующие функции же
источник

AK

Anton Korotkikh in Clojure — русскоговорящее сообщество
Azamat Kalimoulline
А мы не используем таймеры, мы просто sleep делаем.
нет не делаете. его нельзя сделать не забив мэйн цпу нагрузкой
источник

AK

Anton Korotkikh in Clojure — русскоговорящее сообщество
Диёр
Есть блокирующие функции же
есть, они связаны с цпу нагрузкой - парсинг жейсона например
источник

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
Anton Korotkikh
нет не делаете. его нельзя сделать не забив мэйн цпу нагрузкой
А вот берём и делаем. И пофиг что там на ЦПУ.
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Azamat Kalimoulline
А мы не используем таймеры, мы просто sleep делаем.
На любой линукс платформе можно заблокировать тред посикс вызовом. Вопрос не в том можно ли это сделать, а в том можно ли этого не делать
источник

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
Andrew Rudenko
На любой линукс платформе можно заблокировать тред посикс вызовом. Вопрос не в том можно ли это сделать, а в том можно ли этого не делать
Я же не про это. Я про то, что в libuv можно это в отдельном потоке выполнить.
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Диёр
Есть блокирующие функции же
Ни один серьезный код их не использует и вся платформа про то как их не использовать
источник

Д

Диёр in Clojure — русскоговорящее сообщество
Anton Korotkikh
есть, они связаны с цпу нагрузкой - парсинг жейсона например
Ну, синхронный слип тоже есть и сделать его несложно и даже цпу не будет жариться
источник

AK

Anton Korotkikh in Clojure — русскоговорящее сообщество
Azamat Kalimoulline
Я же не про это. Я про то, что в libuv можно это в отдельном потоке выполнить.
ты сейчас пытешься придумать какой-то вырожденый и очень нелепый кейс. это примерно в духе "ну как всё таки размешивать чай молотком? ведь можно же!"
есть инстумент и вполне чёткая область применения
источник

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
Anton Korotkikh
ты сейчас пытешься придумать какой-то вырожденый и очень нелепый кейс. это примерно в духе "ну как всё таки размешивать чай молотком? ведь можно же!"
есть инстумент и вполне чёткая область применения
Я пытался сказать, что для таких случаев в libuv есть инструменты, несмотря на то, что он single threaded event loop. А в жизни оно всякое бывает.
источник

KR

Kostyantin Randomname in Clojure — русскоговорящее сообщество
источник