Описание тега double-checked-locking
Блокировка с двойной проверкой - это шаблон разработки программного обеспечения, используемый для уменьшения накладных расходов на получение блокировки путем первого тестирования критерия блокировки без фактического получения блокировки.
8
ответов
Дважды проверил блокировку в.NET
Я наткнулся на эту статью, обсуждающую, почему парадигма блокировки двойной проверки нарушена в Java. Действительна ли парадигма для.NET (в частности, C#), если объявлены переменные volatile?
27 дек '08 в 11:05
0
ответов
Безопасна ли двойная проверка блокировки в C++ для однонаправленной передачи данных?
Я унаследовал приложение, которое я пытаюсь улучшить производительность, и в настоящее время он использует мьютексы (std::lock_guard<std::mutex>) передавать данные из одного потока в другой. Один поток является низкочастотным (медленным), кото…
25 ноя '16 в 04:01
4
ответа
Какая реализация для ленивого синглтона, инициализация которого может быть неудачной?
Представьте, что у вас есть статический метод без аргументов, который идемпотентен и всегда возвращает одно и то же значение и может выдать проверенное исключение, например, так: class Foo { public static Pi bar() throws Baz { getPi(); } // gets Pi,…
02 мар '11 в 20:53
1
ответ
Двойная проверка блокировки в JAVA
Читая о DCL в Википедии, я задавался вопросом о проблеме в DCL и предлагаемом решении, или другими словами, почему volatile ключевое слово нужно? Короче говоря, проблема: использование DCL может в некоторых случаях приводить к тому, что частично ско…
25 май '14 в 09:09
1
ответ
Тройная проверка блокировки?
Таким образом, в то же время мы знаем, что двойная проверка блокировки как есть не работает в C++, по крайней мере, в переносимой форме. Я только что понял, что у меня хрупкая реализация в ленивом дереве, которое я использую для трассировки лучей ме…
03 мар '10 в 15:21
2
ответа
Синглтонная реализация C++, двойная проверка блокировки
Я много слышал и читал о подходах к реализации синглтонов в C++, таких как Meyer, Phoenix и т. Д., Но все они, похоже, имели проблемы в определенных сценариях использования. Поэтому я придумал свой собственный подход к реализации, Даниэль Синглтон. …
13 фев '11 в 21:13
10
ответов
Дважды проверил блокировку Артикул
Я читал эту статью о "Двойной проверке блокировки", и из основной темы статьи мне было интересно, почему в какой-то момент статьи автор использует следующую идиому: Листинг 7. Попытка решить проблему неупорядоченной записи public static Singleton ge…
01 окт '08 в 11:34
1
ответ
Ищите тест для воспроизведения сломанной двойной проверенной блокировки
Кто-нибудь знает тест, который воспроизводит проблему "сломанной двойной проверенной блокировки" в Java?
27 ноя '12 в 05:45
1
ответ
Возможно (... да, верно) решено: дважды проверил блокировку на C++: новичок в указателе температуры, затем назначить его экземпляру
Это продолжение этого поста о двойной проверке блокировки. Я пишу новое сообщение, потому что кажется, что публикация продолжения "старых" сообщений не делает его таким же видимым / активным, как отправка нового сообщения, возможно, потому, что боль…
21 авг '10 в 10:38
2
ответа
Двойная проверка-блокировка гарантирует состояние объекта? (параллелизм на практике)
Я читаю параллелизм на практике и имею некоторое недопонимание.цитата: реальная проблема с DCL заключается в предположении, что худшее, что может произойти при чтении ссылки на общий объект без синхронизации, - это ошибочно увидеть устаревшее значен…
05 фев '17 в 15:31
1
ответ
Как правильно использовать Double-Checked Locking с барьером памяти в C++?
Я только что прочитал отличный блог C++ и опасности двойной проверки блокировки И я не понимаю, почему мы должны использовать первый барьер памяти в Примере 12 (как показано ниже): Singleton* Singleton::instance () { Singleton* tmp = pInstance; ... …
25 окт '18 в 03:47
1
ответ
Поточная безопасная ленивая инициализация: статический vs std::call_once vs двойная проверка блокировки
Для поточной безопасной ленивой инициализации следует предпочитать статическую переменную внутри функции, std::call_once или явную двойную проверку блокировки? Есть ли значимые различия? Все три можно увидеть в этом вопросе. Дважды проверил Lock Sin…
24 сен '14 в 09:43
2
ответа
Java-коды, которые не проходят проверку двойной блокировки
Примечания: Я знаю, что до версии Java 5(выпущенной в 2004 году) двойная проверка блокировки не будет работать в Java, даже если вы добавите "volatile" в поле "instance". и после Java 5 изменчивая семантика была правильной для двойной проверки блоки…
15 янв '16 в 07:42
3
ответа
Дважды проверил шаблон блокировки в C++11?
Новая модель машины C++11 позволяет надежно работать многопроцессорным системам. реорганизации инструкций. Как отметили Мейерс и Александреску, "простая" реализация шаблона блокировки с двойной проверкой небезопасна в C++03 Singleton* Singleton::ins…
15 май '11 в 13:38
2
ответа
Двойное сопоставление с HashMap
Мы работали над куском кода для получения синглтонов. Мы пытаемся получить их, если класс существует в нашей коллекции, мы возвращаем его, в противном случае мы создаем его и сохраняем в нашей коллекции. Мы используем двойную проверку блокировки, чт…
28 апр '14 в 10:16
2
ответа
Двойная проверка блокировки - цель c
Я понял, что двойная проверка блокировки имеет недостатки в Java из-за модели памяти, но обычно это связано с одноэлементным шаблоном и оптимизацией его создания. Как насчет этого случая в объективе-c: У меня есть логический флаг, чтобы определить, …
07 июн '10 в 14:43
5
ответов
Двойная проверка блокировки на словаре "ContainsKey"
Моя команда в настоящее время обсуждает эту проблему. Данный код является чем-то вроде if (!myDictionary.ContainsKey(key)) { lock (_SyncObject) { if (!myDictionary.ContainsKey(key)) { myDictionary.Add(key,value); } } } Некоторые из постов, которые я…
16 май '11 в 14:20
4
ответа
Двойная проверка блокировки без летучих
Я прочитал этот вопрос о том, как сделать двойную проверку блокировки: // Double-check idiom for lazy initialization of instance fields private volatile FieldType field; FieldType getField() { FieldType result = field; if (result == null) { // First…
26 апр '15 в 20:54
1
ответ
Boost upgrade_lock и DCLP (дважды проверенная схема блокировки)
Предположим, у нас есть следующий (псевдо) код: using UpgradeLock = boost::upgrade_lock<boost::shared_mutex>; using UpgradeToUniqueLock = boost::upgrade_to_unique_lock<boost::shared_mutex>; boost::shared_mutex mtx; void DeleteTable(<t…
13 ноя '17 в 12:08
2
ответа
Java дважды проверил блокировку - строки
При условии strings содержит поле final, означает ли это, что в контексте блокировки с двойной проверкой нет необходимости объявлять их volatile? Например class SomeClass{ private String val; String getVal(){ if(val == null){ synchronized(this){ if(…
12 ноя '15 в 12:50