Re[3]: active object pattern
От: MaximE Великобритания  
Дата: 14.02.05 18:19
Оценка:
Tom wrote:

> Хочу ещё добавить, что проблемма сильно усложняется, если обьект живущий в потоке — не синглтон.


Непонятно, что имеется ввиду под данным заявлением.

Возможные варианты:

  1. Один объект, один поток. Код приводился, нет проблем.
  2. Один объект, пул потоков. Методы объекта должны быть thread-safe, больше проблем нет.
  3. Несколько объектов, один поток. Смысла большого нет, но реализуется в точности как п.1.
  4. Несколько объектов, пул потоков. В точности, как п.2.

--
Maxim Yegorushkin

Those who do not understand Unix are condemned to reinvent it, poorly. © Henry Spencer
Posted via RSDN NNTP Server 1.9
Re: обьект живущий в отдельном потоке
От: Chez Россия  
Дата: 15.02.05 07:19
Оценка:
Здравствуйте, gid_vvp, Вы писали:

Недавно реализовывал подобную вещь как сервис/драйвер винды. Объект создаётся в процессе services.exe или driver.exe, все вызовы методов происходят через DeviceIoControl. В данном случае можно обойтись даже без мощного марашаллинга, поскольку на время вызова процесс объекта разделяет память вызывающего процесса. О, как.

В общем, работает весьма приятно, только с отладкой несколько сложновато.

Кстати, хотелось бы узнать, может есть уже какие-то отработанные технологии для использования объектов размещенных в сервисе, например на основе ATL ?


А, вот ещё: а почему вас собственно не устраивает COM Exe Server ?

Chez, ICQ#161095094

Posted via:RSDN@Home;version:1.1.3;muzikstamp:А.К. — Дворник

Re[2]: обьект живущий в отдельном потоке
От: Аноним  
Дата: 15.02.05 07:50
Оценка:
Здравствуйте, Chez, Вы писали:

C>А, вот ещё: а почему вас собственно не устраивает COM Exe Server ?


А почему он собственно должен устраивать?
Он плохо подходит на эту роль.
Это решение плохо переносимо да и чтобы добиться нужного поведения
придется еще довольно много повозиться.
Пихать в приложение довольно толстую прослойку из COM
только ради активных объектов я бы не стал.

Ну и наконец все это довольно элегантно реализуется средствами С++
с помощью boost (см. пост от MaximE).
Re[3]: active object pattern
От: bkat  
Дата: 15.02.05 07:53
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>Хочу ещё добавить, что проблемма сильно усложняется, если обьект живущий в потоке — не синглтон.


А почему это усложняет жизнь?
Вроде никаких проблем из-за "несинглтонности" нету.
Другое дело, если он является noncopyable
и есть желание копировать такие объекты направо и налево.
Тогда да, ситуация усложняется.
А создавать такие объекты с нуля можно без проблем в любом количестве.
Re[4]: опечатка...
От: bkat  
Дата: 15.02.05 07:55
Оценка:
Опечатался...
Конечно же имелось ввиду:

Другое дело, если он НЕ является noncopyable
и есть желание копировать такие объекты направо и налево.

Re: обьект живущий в отдельном потоке
От: Аноним  
Дата: 15.02.05 09:38
Оценка:
Здравствуйте, gid_vvp, Вы писали:

_>Hi, All.


_>Может немного не по теме форума...

_>Но я не знаю куда запостить этот вопрос.

_>Необходимо сделать так чтобы некий объект (класс) полностью жил в отдельном потоке, т.е. чтобы все вызовы функций данного класса происходили в контексте его потока, даже если они вызываются из других потоков.


_>Возможно немного запутанно...

_>Но надеюсь на помощь.

Не задана операционная система, но для Windows надо вызывать функции через посылку сообщения потоку, в котором живет объект.
Именно так устороен объект модели Apartment технологии COM.
Поэтому можно использовать ATL для создания обьекта и его методов или даже Visual Basic 6.
Однако, в этом случае не избежать потерей в быстродействии из-за маршалинга.
Ы
Re[2]: обьект живущий в отдельном потоке
От: gid_vvp  
Дата: 17.02.05 06:59
Оценка:
Здравствуйте, vvaizh, Вы писали:

V>Взамен — хочу ответ на вопрос, где вы хотите это применить?

V>(
V>а) состояние графического редактора
V>б) контекст сессии для web-сервера
V>в) синтаксический парсер
V>г) что то новое..
V>)

Пишу класс для работы с контроллером станка, а драйвера имеют
особенность: с ними можно работать только из одного потока, а
приложение подразумевается многопоточное.
Re[4]: active object pattern
От: Tom Россия http://www.RSDN.ru
Дата: 17.02.05 10:26
Оценка:
ME>
  • Несколько объектов...
    Если обьекто несколько, то их прийдётся идентифицировать=>хранить и искать....
    ... << RSDN@Home 1.1.4 beta 4 rev. 303>>
  • Народная мудрось
    всем все никому ничего(с).
    Re[5]: active object pattern
    От: MaximE Великобритания  
    Дата: 17.02.05 10:34
    Оценка:
    Tom wrote:

    > ME>
  • Несколько объектов...
    > Если обьекто несколько, то их прийдётся идентифицировать=>хранить и искать....

    Это зависит от конкретной задачи, в общем случае утверждение не имеет смысла.

    --
    Maxim Yegorushkin
    Posted via RSDN NNTP Server 1.9
  • Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.