Реализация атомарных операций Qt

#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, но я пытался найти, где они были реализованы. Спасибо, Кайл.