Re[3]: Новый тип синглтона! Зацените!
От: remark Россия http://www.1024cores.net/
Дата: 16.01.09 13:02
Оценка: 3 (1) +1
Здравствуйте, Аноним, Вы писали:

А>Цитата:

А>"что сразу бросается в глаза — если у тебя на этом куске повиснет поток с высоким приоритетом, а синглтон будет создаваться потоком с низким — будут страшные тормоза."

А>Спасибо!

А>Если есть у вас какиенить идеи как это можно лучше сделать/обойти — буду благодарен.


Есть DCSI — double-checked serialized initialization, он же DCL (double-check locking) и DCI (double-check initialization).
Это когда, пока один инициализирует объект, остальные ждут на мьютексе.

Есть DCSI-TSD — DCSI with thread-specific data
То же, но с копией указателя на объект в TSD.

Есть DCCI (double-checked concurrent initialization).
Это когда инициализация объекта идемпотентная. Т.е. все потоки, которые увидели неинициализированный объект, начинают его создавать. Далее кто-то один атомарно подменяет глобальный указатель на свой, остальные рушат свои объекты.


Данная реализация — DCSI. DCCI может быть реализован полностью неблокирующим (гарантия wait-free: http://www.rsdn.ru/Forum/?mid=2930849
Автор: remark
Дата: 27.04.08
). Соотв. не подвержен таким вещам как priority inversion.



1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.