#qt #atomic #reference-counting
#qt #атомарные #подсчет ссылок
Вопрос:
я пытался найти, где и как реализован подсчет ссылок для Qt. QBasicAtomicInt и QAtomicInt используют функции ref() и deref(), которые предоставляют эффективный API подсчета ссылок. Эти функции атомарно увеличивают и уменьшают значение, но где эти функции реализованы в библиотеке? Я пытаюсь понять, как именно Qt реализует подсчет атомарных ссылок. Спасибо.
Ответ №1:
Атомарные операции не могут быть выполнены в обычном C , поэтому они реализуются непосредственно в сборке для каждой конкретной архитектуры процессора.
Вот исходный код атомарных операций Qt для процессоров x86: http://qt.gitorious.org/qt/qt/blobs/4.7/src/corelib/arch/i386/qatomic_i386.s
Комментарии:
1. Потрясающе, это тот файл, который я искал. Я поискал в своем каталоге Qt / include некоторые ключевые слова по ссылке, которую вы опубликовали, и нашел файл Qt /include /QtCore /qatomic_i386.h, который содержит определение функций ref() и deref(). И я знал, что они не могут быть реализованы на C , и они реализованы с использованием расширенного asm, но я пытался найти, где они были реализованы. Спасибо, Кайл.