Почему обработка событий в родном Visual C ++ не рекомендуется? - PullRequest
2 голосов
/ 19 февраля 2010

http://msdn.microsoft.com/en-us/library/ee2k0a7d.aspx

Обработка событий также поддерживается для родные классы C ++ (классы C ++, которые не реализовывать COM-объекты), однако эта поддержка устарела и будет удален в будущем релиз .

Кто-нибудь знает почему? Не удалось найти объяснения этому утверждению.

Ответы [ 4 ]

6 голосов
/ 06 августа 2010
  1. Это совершенно нестандартный кладж, который, вероятно, имеет очень мало фактического пользователи. И я имею в виду нестандартный клудж даже в частном мире WinNT и Microsoft.

  2. COM имеет гораздо более богатый репертуар для событийоподобных механизмов, а также позволяет полностью многопоточный код в наши дни

  3. Это смертельно - эта функция делает неявную блокировку (возможно, идея нашего дедушки «синхронизированы» перед шаблонами и широко распространено безопасное использование нормальных критических секций). Тот делает его более опасным, чем отдельная квартира COM, хм, вещь :-) Так как он может дать вам тупик из ниоткуда (случалось и с синхронизированными методами Java - ничего особенного: -)

  4. В наши дни все и их собаки знают, как использовать обычные многопоточность и, по крайней мере, критические секции с умными указателями, поэтому, помимо того, что это опасно, эта вещь также не имеет значения.

1 голос
/ 06 августа 2010

Я бы рискнул предположить, что они захотят, чтобы вы сделали все это.

1 голос
/ 19 февраля 2010

Я бы рискнул предположить, и это просто, что подобная функциональность может быть достигнута библиотекой типов сигналов / слотов более переносимым / стандартным способом C ++ (с шаблонами), а не требующей поддержки компилятора MS.

0 голосов
/ 19 февраля 2010

Посмотрите на Boost :: Signals2

(Это преемник Boost Signals, который больше не поддерживается)

...