Как можно сделать такой COM-объект, который бы всем его создавшим потокам (нитям) предоставлял какие-либо данные и позволял их модифицировать, вроде как static-переменные в классах?
спасибо.
Re: разделяемые данные между потоками (нитями) - как?
D>Я неправильно выразился или так сделать нельзя в принципе?
Ты выразился не очень понятно. Обьясни получше чего надо добится.
D>На самом деле очень надо
Верю
... << RSDN@Home 1.1.0 stable >>
Народная мудрось
всем все никому ничего(с).
Re: разделяемые данные между потоками (нитями) - как?
Здравствуйте, darkhunter, Вы писали:
D>Как можно сделать такой COM-объект, который бы всем его создавшим потокам (нитям) предоставлял какие-либо данные и позволял их модифицировать, вроде как static-переменные в классах? D>спасибо.
Делаешь глобальные переменные. Либо статики в классе. Не забываешь синхронизировать доступ. Для внепроцессного сервера — данные в этих переменных будут разделяемы между всеми инстансами, созданными так, что имплементация COM-объекта оказалось в одном и том же процессе. (Какая неуклюжая оговорка! А все потому что и внепроцессный сервер может в нескольких процессах оказаться). Для внутрипроцессного сервера данные будут разделяться между всеми инстансами созданными в одном (клиентском) процессе.
Интересный вопрос — как сделать разделяемыми между разными процессами. Ну, сделать расшаренные сегменты, memory-mapped files вместо глобальных переменных.
Совсем интересный вопрос — как расшарить данные между разными машинами. Можно, к примеру, положить их в БД на общий сервер. Или Active Directories. Или файл-сервер. Или еще какой разделяемый (COM?) сервер сделать.
А вот если на разных машинах, не соединенных сетью, то уже, кажется, нельзя... Дискеткой же не считается?
GS
Re[2]: разделяемые данные между потоками (нитями) - как?
Спасибо, всё заработало
Сервер внутрипроцесный, использовал глобальные переменные. Были проблемы с присваиванием знчений static-атрибуту класса, отказался от этого (я не силён в VC++)