Глядя на определение для «инициализации»:Инициализирует ли + (void) любую блокировку потока?
+ (void)initialize
Обсуждение
Среда выполнения отправляет инициализации каждому классу в программе ровно один раз, как раз перед классом, или любой класс, который наследует от он отправляет свое первое сообщение из программы. (Таким образом, метод никогда не может быть вызван, если класс не используется.) Время выполнения отправляет сообщение инициализации классам в потокобезопасном режиме. Суперклассы получают это сообщение перед их подклассами.
указано, что инициализация отправляется «поточно-безопасным способом». Под обложками находится среда выполнения, создающая блокировку, чтобы сделать этот поток потоков безопасным или он по сути потокобезопасен только от того, как работает среда выполнения? Если он блокирует, означает ли это, если вы реализуете + инициализировать среду выполнения, создает блокировку, которую она иначе не создала бы?
Точно; и создание замка действительно действительно дешево. Замки становятся дорогими, когда они заблокированы! Как только инициализация класса выполняется, механизм синхронизации, используемый в нем, никогда не используется снова. BTW: доступен источник для объектной среды-c; он открыт. – bbum
Кусочек головоломки тогда, спасибо. Возможно, мне придется извлечь источник времени выполнения и посмотреть, что произойдет потом. –