LINUX.ORG.RU

Вызывать и не ждать функцию библиотеки

 


0

2

Добрый день, комрады!

Использую woo (https://github.com/fukamachi/woo). Хочется реализовать start/stop функции в модуле. Для этого надо код:

  (lambda (env)
    (declare (ignore env))
    '(200 (:content-type "text/plain") ("Hello, World"))))```


вызывать и не блокировать (не ждать) дальнейшее выполнение. Вопрос - как это сделать на CL?

Это работает только в рамках его сервера, где он запилил поддержку async вызовов на libev. Т.е. как action в woo это будет асинхронно работать по приходу запроса. А вот дальше интересно, если тебе нужно, допустим, к базе асинхронно сходить, то опять же нужно смотреть что он там для этого запилил.

Есть ещё другой проект cl-async, с заявкой на универсальность, но опять же там всё работает в рамках этой либы. Асинхронный веб-сервер и клиенты для БД там есть, а также поддержка промисов, т.е. можно свои велосипеды асинхронно пускать.

Вообще я уже писал что асинхронщина это больное место у CL, т.к. в стандарте нет и сообщество ничего «стандартного» не родило (ввиду малочисленности шарящих людей). В итоге все пилят кто во что горазд.

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

По сути мне сейчас надо вот что - вызывать старт и пойти дальше, не дожидаясь того, что сервер вернёт мне дальше, для того чтобы к сервису можно было обращаться через тот же repl

silver-bullet-bfg ★★ ()