Делаю клиент-серверное приложение, клиент на tcl. Хочу, чтобы fileevent клал сообщения в очередь (список). Затем как-то (по таймеру, через vwait, из самого fileevent) запускается процедура «обработать», которая берёт сообщение из очереди и обрабатывает его.
В очереди бывают сообщения с разным приоритетом, поэтому процедура «обработать» не совсем тривиальна: она может пошарить по очереди и потом взять какое-то событие.
В обычной жизни я завожу мьютекс, который блокируется при записи в очередь и на всё время, пока процедура «обработать» работает с очередью. При этом в одном треде делается чтение из потока и запись в очередь, а в другом треде - извлечение события из очереди и обработку. А в tcl что делать? При каких условиях можно гарантировать, что fileevent не вызовется во время выполнения процедуры «обработать» и не испортит процесс анализа очереди?
Я как-то не понял этот момент из чтения мануала.
Спасибо!