Требуется организовать взаимодействие между клиентом и сервером. Прежде всего, очереди сообщений.
Пока что на стороне tcl очередь - это у меня обычный list. Но сообщения могут быть очень большими по объёму, боюсь за производительность.
На стороне лиспа неоднократно уже попалась очередь, передающая данные между разными тредами. В максимально развитом виде есть две очереди. Любой тред пишет в первую очередь. Тред-диспетчер перекладывает сообщения из одной очереди в другую. Любой тред читает сообщения из второй очереди. Всё это делается через мьютексы и/или condition-переменные. Я всё это написал руками, но много писанины получается.
Ещё сейчас мне нужно, чтобы мой тред отправил сообщение на клиента и ждал на него ответа, после чего продолжал выполнение (передача продолжения в данном случае не подходит). Но просто ждать сообщение нельзя, поскольку клиент может присылать сообщения другим тредам. Нужен какой-то «фильтрующий читатель», который подключается к диспетчеру, выбирает из очереди своё сообщение и обрабатывает его, а остальные сообщения пропускает.
Хотя последняя задача всё равно должна решаться в контексте swank, буду смотреть, что там для этого есть. Думал, что swank:wait-for-event годится, но глядя на исходник не могу понять.