Re[21]: Goto's are evil?
От: Cyberax Марс  
Дата: 02.12.05 12:21
Оценка:
reductor wrote:

> C>Например, если нельзя допускать пауз GC и большого оверхеда

> C>конкурентного GC. Или если существуют гораздо более эффективные методы
> C>управления памятью для данной задачи (preallocated пулы, например). Или
> C>если требуется *детерминированое* уничтожение объекта.
> Вы на чей вопрос здесь отвечаете?
> Я спрашивал для каких задач. Конкретнее.

Игры, требовательные десктопные приложения, системный софт.

> Опять же, про паузы интересно.


RTFM: http://www.memorymanagement.org/

> C>А в С++ нет проблем с алиасингом. Более того, он тоже успешно

> C>используется для некоторых трюков.
> Переведите

В С++ нет проблем с накладывающимися массивами, так как они с помощью
адресной арифметики могут быть использованы для интересных
inplace-преобразований.

> C>Вот вам прямо с About Haskell

> Что вы хотели сказать цитированием мне этого sales talk десятилетней
> давности?

А что, вы один должны гнать sales-talk десятилетней давности про GC?

> C>В С++ продумано взаимодействие аллокаторов, стандартных контейнеров,

> C>алгоритмов и т.п. Например, как мне поместить в контейнер OCaml'а
> C>объект, созданый в блоке shared memory? Причем указатели в этом объекте
> C>представлены в виде смещений относительно начала блока, а null pointer
> C>представлен в виде указателя со смещением -1.
> Вы будете продолжать фантазировать или хотя бы прочитаете мануал по
> окамлу?

КАК мне разместить, скажем, список OCaml'а в shared memory и передать на
него ссылку в другой процесс? В С++ это делается так:
   //Type of shared memory vector
   typedef vector<int, shmem_allocator_int_t > MyVect;
   //Create named vector
   MyVect *shmem_vect = segment.construct<MyVect> 
("ShmVect")(segment.get_raw_alloc_algo());
   for(int i = 0; i < max; ++i){
      shmem_vect->push_back(i);
   }

В другом процессе:
   typedef vector<int, shmem_allocator_int_t > MyVect;
   MyVect *shmem_vect = segment.find<MyVect>("ShmVect").first;
   //А теперь можно, например, посортировать вектор.
   std::sort(shmem_vect->rbegin(), shmem_vect->rend());


Хотя я знаю, что вы скажете — дадите мне ссылку на документацию по FFI и
станете рассказывать, что shared memory устарел и никому не нужен.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.