Каждый интерпретатор Tcl (т. Е. Каждый экземпляр Tcl_Interp
) строго связан дизайном с потоком, который его создает;реализация внутренне использует данные, относящиеся к конкретным потокам, чтобы практически полностью исключить необходимость в серьезных блокировках (таких как глобальная блокировка интерпретатора, которая наносит ущерб производительному многопоточному коду Python).Команды Tcl полностью связаны с интерпретатором, который их содержит.Вы должны:
- Отправить сообщение в один поток для выполнения действия.(См. Функцию
Tcl_QueueEvent()
или используйте команду thread::send
пакета Thread с уровня Tcl.) - Дублируйте команду в нескольких интерпретаторах, по одному на поток.Это может быть легко или сложно в вашем приложении.
Во избежание всех сомнений: вы не можете безопасно использовать интерпретатор Tcl из нескольких потоков.Это не будет работать;гарантировано. Это приведет к сбоям.