разделяемые данные между потоками (нитями) - как?
От: darkhunter  
Дата: 09.03.04 15:48
Оценка:
Как можно сделать такой COM-объект, который бы всем его создавшим потокам (нитям) предоставлял какие-либо данные и позволял их модифицировать, вроде как static-переменные в классах?
спасибо.
Re: разделяемые данные между потоками (нитями) - как?
От: darkhunter  
Дата: 12.03.04 08:06
Оценка:
Я неправильно выразился или так сделать нельзя в принципе?
На самом деле очень надо
Re[2]: разделяемые данные между потоками (нитями) - как?
От: Tom Россия http://www.RSDN.ru
Дата: 12.03.04 11:37
Оценка:
D>Я неправильно выразился или так сделать нельзя в принципе?
Ты выразился не очень понятно. Обьясни получше чего надо добится.

D>На самом деле очень надо

Верю
... << RSDN@Home 1.1.0 stable >>
Народная мудрось
всем все никому ничего(с).
Re: разделяемые данные между потоками (нитями) - как?
От: George Seryakov Россия  
Дата: 14.03.04 00:41
Оценка: :)
Здравствуйте, darkhunter, Вы писали:

D>Как можно сделать такой COM-объект, который бы всем его создавшим потокам (нитям) предоставлял какие-либо данные и позволял их модифицировать, вроде как static-переменные в классах?

D>спасибо.

Делаешь глобальные переменные. Либо статики в классе. Не забываешь синхронизировать доступ. Для внепроцессного сервера — данные в этих переменных будут разделяемы между всеми инстансами, созданными так, что имплементация COM-объекта оказалось в одном и том же процессе. (Какая неуклюжая оговорка! А все потому что и внепроцессный сервер может в нескольких процессах оказаться). Для внутрипроцессного сервера данные будут разделяться между всеми инстансами созданными в одном (клиентском) процессе.

Интересный вопрос — как сделать разделяемыми между разными процессами. Ну, сделать расшаренные сегменты, memory-mapped files вместо глобальных переменных.

Совсем интересный вопрос — как расшарить данные между разными машинами. Можно, к примеру, положить их в БД на общий сервер. Или Active Directories. Или файл-сервер. Или еще какой разделяемый (COM?) сервер сделать.

А вот если на разных машинах, не соединенных сетью, то уже, кажется, нельзя... Дискеткой же не считается?
GS
Re[2]: разделяемые данные между потоками (нитями) - как?
От: darkhunter  
Дата: 15.03.04 12:40
Оценка:
Спасибо, всё заработало
Сервер внутрипроцесный, использовал глобальные переменные. Были проблемы с присваиванием знчений static-атрибуту класса, отказался от этого (я не силён в VC++)
... << RSDN@Home 1.1.3 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.