Re[21]: Исповедь C++ника
От: so5team https://stiffstream.com
Дата: 26.12.20 09:59
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

S>>Сперва прочитайте то, что вам пишут, потом уже отвечайте.


Тё>OMG да я понял, что вы давно слились, когда запели про "10 подписок".


Я про случай с небольшим количеством подписчиков говорил с самого начала: http://rsdn.org/forum/job/7911770.1
Автор: so5team
Дата: 24.12.20


S>>Вы заявили следующее (http://rsdn.org/forum/job/7907304.1):
Автор: Тёмчик
Дата: 17.12.20

Тё>Реалтайм бывает soft и hard. Soft вообще похрен на чём делать, а для hard плюсы не подходят (если не рассматривать C с классами).

Т.е. когда вас прижали к стенке вашей же цитатой, то вы переобуваетесь и признаете, что речь таки шла про рилтайм. ЧТД.

S>>Тёмчик, давайте говорить о примере от B0FEE664. В котором под T можно подразумевать только std::pair<OnPress, void*>. Если вы хотите ввести в обсуждение еще что-то, то потрудитесь это описать, чтобы люди понимали, о чем речь.

Тё>Почему у вас onpress в типе? Почему у вас void*? Вы что, про статическую типизацию не слыхали?

Это не у меня. Это у человека, который написал пример, приведенный B0FEE664. А тому человеку, возможно (и скорее всего) нужно было в качестве callback-ов использовать чисто сишные функции. А это может потребоваться по разным причинам, начиная от использования легаси-кода и заканчивая интеграцией C++ного кода и кода на каком-нибудь Lua или Python (из которых наружу торчат C-шные интерфейсы).

S>>Т.е. вы для хранения списка подписок предлагаете хранить еще и специальный sentinel node?

Тё>Я не "предлагаю" — это оптимизация связного списка для упрощения его операций, почитайте, учиться ведь всегда полезно.

Так ведь я не про упрощение, а про связанные с этим расходы.

S>>Подписчик.

Тё>Ну вот ваш подписчик должен хранить интерфейс для отписки. Может хранить пачку таких подписок в списке, и отписываться в деструкторе, например.

Или он просто хранит у себя указатель на Button и вызывает RemoveOnButtonPress в нужных ему местах.

S>>На словах все герои. Только вот если у вас отписка работает через поиск (по указателю на callback или по какому-то уникальному Id), то она оказывается более устойчивой к подобным ошибкам.

Тё>Т.е. вы смирились с фактом, что в вашем говнокоде нет определённости, придёт отписка дважды, или вообще не придёт. И поэтому вы городите тормозной кривой код, оправдывая это порно "локальным кэшем".

Мой говнокод, в отличии от вашего идеального, свободно лежит в открытом доступе. И любой желающий может посмотреть и сделать выводы. В отличии от.

Тё>Возвращается ссылка на интерфейс Subscription. Это может быть наследник от Node имплементирующий Subscription. О каком каком копировании вы поёте?


Тёмчик, мы же про C++ говорим, здесь вы не можете вернуть "интерфейс". Вам нужно возвращать либо экземпляр конкретного класса (и тогда сталкиваться с проблемой копирования экземпляров), либо возвращать (умный) указатель на реализацию интерфейса со всеми вытекающими для этого последствиями.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.