Результаты поиска по запросу "concurrency"

7 ответов

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

ностью загружаю Java HashMap при инициализации, но после инициализации несколько потоков будут считывать данные из HashMap. Я хотел бы избежать любого типа синхронизации, так как карта в основном только для чтения и никогда не меняется. Но могу ...

5 ответов

Почему этот ответ был отклонен? Дело в том, что другие ответы не привели к тому, что изменчивость может быть внутренней или внешней. Если вы возвращаете изменяемый файл, значит, вы не безопасны. Вопрос не ставит своего вопроса так узко, как предполагает комментарий; расширенный вопрос после примера кода можно было бы выразить в коде, возможно, в виде модульного теста. Но я сочувствую попыткам убедить коллег. «Они не верят ни мне, ни моему тестовому коду, ни Джошу Блоху, но, возможно, они примут ответ на SO».

ыло интересно, если у вас есть статический метод, которыйнесинхронизируется, но делаетнеизменить любые статические переменные это потокобезопасно? А что если метод создаст внутри себя локальные переменные? Например, является ли следующий код ...

0 ответов

Пожалуйста, отредактируйте свой ответ правильно.

е и запись одной переменной является атомарным (языковая гарантия!), Если только переменная не имеет тип long или double. Я читал слайды курса и нашел, что написано. Класс был о параллелизме. Может кто-нибудь объяснить мне, почему написание ...

ТОП публикаций

8 ответов

Нужно ли защищать доступ для чтения к контейнеру STL в многопоточной среде?

У меня есть один контейнер std :: list <> и эти темы: Один поток писателя, который добавляет элементы на неопределенный срок. Один поток чтения / записи, который читает и удаляет элементы, пока они доступны. Несколько потоков чтения, которые ...

0 ответов

Фактически, тот факт, что пример PLINQ использует ToDictionary, теоретически должен сделать его медленнее, поскольку элементы не могут быть добавлены параллельно в отличие от ConcurrentDictionary <K, V>. Фактически, если вы посмотрите на реализацию ToDictionary в ParallelEnumerable, он фактически извлекает элементы из параллельного запроса в восходящем направлении, когда они становятся доступными последовательным способом, чтобы добавлять их в Словарь <K, V> по одному. Так что, по крайней мере, его Parallel :: ForEach должен работать лучше. Смотрите мой ответ, почему я думаю, что это не так.

е: Я изменил с System.Threading.Tasks.Parallel.ForEach и Concurrent Data структуры на простой запрос plinq (Parallel Linq). Ускорение былоудивительно. Так по сути, plinq быстрее, чем Parallel.ForEach? Или это специфично для задачи. // Original ...

2 ответа

Я добавил правдоподобное объяснение. Посмотри на это.

черезJava-параллелизм на практикеи застрял на8.3.1 Создание и удаление потоков тема. Следующая сноска предупреждает о сохраненииcorePoolSize в ноль. Разработчики иногда испытывают искушение установить размер ядра на ноль, чтобы рабочие потоки в ...

2 ответа

 для получения дополнительной информации о заборах памяти

м, у меня есть свойство, чей установщик защищен блокировкой, но без какой-либо блокировки вокруг получателя, например, private long _myField; public long MyProperty { get { return _myField; } set { lock(whatever) _myField = value; } }В ...

3 ответа

Фьючерс / Успех гонки

Я изучаю фьючерсы, и я пытаюсь создать метод, который принимает два фьючерса в качестве параметра (f а такжеg) и вернуть первое будущее, которое было успешно завершено, в противном случае оно возвращаетсяf или жеg. Вот некоторые примеры ...

2 ответа

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

я есть Java-класс с нефинальной переменной int, которую я явно инициализировал в конструкторе равным 0. Весь другой доступ к переменной управляется с помощью ReentrantLock. Должен ли я волноваться, что потоки не увидят начальное значение 0, ...

3 ответа

Согласитесь с @ davidk01, что это не тупик. И это, конечно, не «классический» пример, если бы он был. Просто для дополнительной информации, даже без запуска потока, вызов метода в java, который синхронизирован с той же блокировкой, которую уже удерживает поток, не будет блокироваться, так как вызывающая сторона уже владеет блокировкой.

оложим, я выполняюsynchronized блок кода внутри некоторого потока и внутриsynchronized block Я вызываю метод, который порождает другой поток для обработки синхронизированного блока кода, который требует такой же блокировки, как и первый метод. ...