Передача по ссылке TCL - Threading? - PullRequest
2 голосов
/ 09 июля 2010

Я использую комплект обработки звука Snack вместе с TCL.Я хочу обрезать часть звука и передать этот раздел другому потоку для работы.

У меня вопрос, как передать что-то по ссылке между потоками в TCL.

1 Ответ

4 голосов
/ 10 июля 2010

Это не сработает. Потоки Tcl спроектированы так, чтобы быть сильно изолированными друг от друга, поскольку это значительно уменьшает количество блокировок, необходимых для нормальной обработки. Недостатком этого является то, что передача вещей между потоками нетривиальна (кроме коротких сообщений, содержащих команды, а аудиоданные нет!) Но есть путь вперед…

Если вы можете отправить данные в виде байтов (на уровне сценария), то я рекомендую передавать их между потоками, используя tsv пакет , который объединен с пакетом потока, чтобы вы могли уже будет. Это позволит вам относительно просто переносить данные между потоками. Имейте в виду, что пакет закусок не поддерживает потоки в своем интерфейсе на уровне сценариев, поэтому при передаче данных все еще будет происходить копирование, а Tk (как и многие другие инструментарии GUI, FWIW) не поддерживает многопоточное использование (не без техник в другой раз), так что если вы делаете визуализацию формы волны, у вас есть работа впереди. (OTOH, современные процессоры тоже могут сэкономить много времени.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...