Re[11]: SObjectizer: I Love This Game!
От: remark Россия http://www.1024cores.net/
Дата: 13.05.07 13:50
Оценка: 44 (1)
Здравствуйте, eao197, Вы писали:

R>>И ещё есть такой трюк малоизвестный, но прикольный. Он ещё один декремент уберёт.

R>>Допустим у тебя есть код:
R>>
R>>if (0 == atomic_dec(obj->ref_count))
R>>  delete obj;
R>>


R>>Его можно заменить на равноценный:

R>>
R>>if (1 == obj->ref_count)
R>>  delete obj;
R>>else if (0 == atomic_dec())
R>>  delete obj;
R>>


R>>При такой модели владения, как здесь используется, такая замена безопасна.

R>>Получается, если этот объект последний держит ссылку и он об этом знает, или он единственный и держал, то атомарный декремент можно не делать, а сразу удалять объект.

E>Как-то пока мне это кажется подозрительным. Я покурю эту тему еще.


Смотри
здесь по поводу этого трюка. Эксперты сошлись на том, что это безопасно для нормальной модели потоко-безопастности (это когда ты можешь увеличивать reference counter, только когда ты владеешь объектом, т.е. уже до этого один раз увеличивал reference counter), как раз то, что в SObjectizer.


R>>

E>

1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[3]: SObjectizer: I Love This Game!
От: Tom Россия http://www.RSDN.ru
Дата: 18.05.09 17:43
Оценка:
E>Если найдешь что-нибудь плохое, поделись впечатлениями, плз. Попробуем исправить.
110 тысяч строк кода — вот это основной недостаток.
Их должно быть 5-10 максимум и то много.
В серьёзном продукте такую огроменную библиотеку использовать я бы побоялся.
Народная мудрось
всем все никому ничего(с).
Re[4]: SObjectizer: I Love This Game!
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 18.05.09 18:41
Оценка:
Здравствуйте, Tom, Вы писали:

E>>Если найдешь что-нибудь плохое, поделись впечатлениями, плз. Попробуем исправить.

Tom>110 тысяч строк кода — вот это основной недостаток.
Tom>Их должно быть 5-10 максимум и то много.
Tom>В серьёзном продукте такую огроменную библиотеку использовать я бы побоялся.

В Crypto++ 60K строк. В POCO ~200K. В ACE больше 630K. В Boost 1.36.0 ~1730K (если выцепить оттуда только boost::unordered, то получится уже ~190K). Так что даже не знаю, не такие уж мы большие.

Надеюсь, что SObjectizer-5 будет построен по модульному принципу. И размер основного ядра серьезно уменьшится. Может быть, до 10-15K строк. А остальная функциональность (вроде транспортной подсистемы) может быть подключена по необходимости.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.