yigal_s' Journal
 
[Most Recent Entries] [Calendar View] [Friends View]

Friday, November 30th, 2012

    Time Event
    10:31p
    Задумался, а вот нафига в имплементации shared_ptr используется именно спин-лок, а не мютекс?

    Подробнее. Конечно, по возможности shared_ptr использует атомарные операции над памятью, но если их нет, то вместо этого реализует критическую секцию через спин-лок.

    Спин-лок, между прочим, достается из пула спин-локов посредством хеширования адреса чего-то там, например, объекта на который указывает shared_ptr, не суть. Но всего в пуле только-то 41 спин локов.

    И теперь вопрос --- а почему ж не мютексы?

    Испугались, что мютексы могут быть медленнее? Вот как бы возможный вариант, я как-то года два назад проверял и вдруг оказалось, как мне припоминается, что под линуксом мютексы медленнее спин-локов могут быть. Не разобрался и почему.

    Испугались, что мютексы надо инициализировать, и не захотели заморачиваться изготовлением навороченных схем, гарантирующих, что они будут инициализированы ранее, чем использоваться?

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

    << Previous Day 2012/11/30
    [Calendar]
    Next Day >>

About LJ.Rossia.org