LINUX.ORG.RU

подкиньте библиотек

 , , , ,


0

1

Требуется организовать взаимодействие между клиентом и сервером. Прежде всего, очереди сообщений.

Пока что на стороне tcl очередь - это у меня обычный list. Но сообщения могут быть очень большими по объёму, боюсь за производительность.

На стороне лиспа неоднократно уже попалась очередь, передающая данные между разными тредами. В максимально развитом виде есть две очереди. Любой тред пишет в первую очередь. Тред-диспетчер перекладывает сообщения из одной очереди в другую. Любой тред читает сообщения из второй очереди. Всё это делается через мьютексы и/или condition-переменные. Я всё это написал руками, но много писанины получается.

Ещё сейчас мне нужно, чтобы мой тред отправил сообщение на клиента и ждал на него ответа, после чего продолжал выполнение (передача продолжения в данном случае не подходит). Но просто ждать сообщение нельзя, поскольку клиент может присылать сообщения другим тредам. Нужен какой-то «фильтрующий читатель», который подключается к диспетчеру, выбирает из очереди своё сообщение и обрабатывает его, а остальные сообщения пропускает.

Хотя последняя задача всё равно должна решаться в контексте swank, буду смотреть, что там для этого есть. Думал, что swank:wait-for-event годится, но глядя на исходник не могу понять.

★★★★★

Последнее исправление: den73 (всего исправлений: 2)

Ответ на: комментарий от monk

Не, слово bindings сразу значит, что нам не надо оно. Для tcl нужна просто эффективная реализация контейнеров. А для лиспа наверняка есть что-то на базе bordeaux-threads.

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

Не, слово bindings сразу значит, что нам не надо оно.

Тебе всё равно данные сериализовать между Lisp и Tcl. Кроме того в случае Tcl этот «binding» ничем не отличается от стандартных пакетов в поставке. И его даже можно вкомпилировать в бинарник.

Для tcl нужна просто эффективная реализация контейнеров.

http://pages.infinit.net/cclients/files/containers.htm

monk ★★★★★
()
Ответ на: комментарий от monk

Забыл сказать: под BSD-подобной лицензией. Вопрос сериализации я решил 100500 лет назад.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.