Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Rasta
Зарегистрирован: 01.08.2005 Сообщения: 35
|
Добавлено: Ср Окт 05 2005 16:56 Заголовок сообщения: Как передавать значение переменной из одного потока в другой |
|
|
? С++
Какой способ самый лучший? Два приложения рабтают в разных потоках. Видеоплеер в одном, а фильтр (DirectShow) в другом. Но из плеера надо передавать значение переменной в фильтр. В одно приложение засунуть их нельзя, да и это неправильно.
Что лучше всего использовать? |
|
Вернуться к началу |
|
|
Kefir
Зарегистрирован: 16.04.2005 Сообщения: 443 Откуда: Пермь
|
Добавлено: Чт Окт 06 2005 09:14 Заголовок сообщения: |
|
|
Ну опять неправильно заданный вопрос. Вопросы по вопросу сходу.
Какая ОС?
Какой инструментарий разработки?
Самый дибильный ответ, который приходит в голову сделать канал и перенаправить потоки ввода-вывода.
Потом как это два приложения работают в разных потоках? Давайте разберемся с терминологией. Есть процесс, у которого своя ВП, процессорное время ему выделяется, ресурсы там всякие. Есть поток, поток внутри процесса, у потока как правило нет своих личных ресурсов, он юзает те которые есть у процесса. (Терминология Э. Танненбаума) Так что уточните что и где работает. |
|
Вернуться к началу |
|
|
Rasta
Зарегистрирован: 01.08.2005 Сообщения: 35
|
Добавлено: Чт Окт 06 2005 12:36 Заголовок сообщения: Windows XP, Visual Studio. Net |
|
|
Разные потоки, потому что фильтр и плеер не используют друг-друга. Они работают поотдельности. плеер использует Renderer'a, а фильтр занимается входным файлом и передает обработанные данные другому фильтру.
Надо из плеера передать значение переменной фильтру! Как это сделать? Подскажите пожалуйста. |
|
Вернуться к началу |
|
|
Kefir
Зарегистрирован: 16.04.2005 Сообщения: 443 Откуда: Пермь
|
Добавлено: Чт Окт 06 2005 12:59 Заголовок сообщения: |
|
|
Какая ОС?
Какой инструментарий?
Если потоки разные а процесс один, то доступ ко всем переменным имеют оба потока, можно ее синхронизировать еще. Если процессы разные то сложнее, это уже в зависимости от ОС. |
|
Вернуться к началу |
|
|
DmitryShm
Зарегистрирован: 17.11.2003 Сообщения: 211 Откуда: Казань
|
Добавлено: Чт Окт 06 2005 13:00 Заголовок сообщения: нах |
|
|
Мля, Rasta, говорят же тебе, что разные процессы, а в них потоки крутятся. Даю ответ: юзай механизмы InterProcess Communication той операционной системы, в которой юзаешься. Как правило, это пайпы или сокеты. DDE в Windows не использовать, т.к. устарело! Для того, чтобы использовать пайпы или сокеты, нужно написать логику клиент-серсерного взаимодействия (как ни как, но придется), а лучше позаимствовать. Не знаю точно как в Linux, а в Windows все объекты ядра для этого имеются (главное не переборщить с переходами в/из режима ядра, т.к. иначе тормозить будет : в пользовательском режиме код как правило работает быстрее). Как совет: читать книжку Рихтера о Win32 внимательно! Если нет, то могу сцылку на электронный вариант кинуть. Без знания предметной области далеко не уедешь, ведь сервер и клиент наверняка придется запускать в отдельных потоках (одного процесса!), чтобы пользователь не замечал "передачи переменной" . _________________ love IT |
|
Вернуться к началу |
|
|
Rasta
Зарегистрирован: 01.08.2005 Сообщения: 35
|
Добавлено: Чт Окт 06 2005 15:31 Заголовок сообщения: |
|
|
Кинь адрес ссылки.
Можно, наверно, еще и memory file использовать??? |
|
Вернуться к началу |
|
|
|