Можете ли вы сбросить () много переменных одновременно в PHP?

Нет, вы теряете преимущества ConcurrentHashMap, делая это. Вы также можете использовать HashMap с synchronized или synchronizedMap(), чтобы заблокировать всю таблицу (это то, что вы делаете, когда обертываете операции в synchronized, так как подразумевается монитор - это весь экземпляр объекта.)

Цель ConcurrentHashMap - увеличить пропускную способность вашего параллельного кода, разрешив одновременное чтение / запись в таблице без блокировки всей таблицы. Таблица поддерживает это внутренне, используя блокировку (несколько блокировок вместо одного, причем каждая блокировка назначена на набор хэш-кодов) - см. Java Concurrency in Practice от Goetz и др.).

Когда вы используете ConcurrentHashMap, все стандартные методы карты (put(), remove() и т. д.) становятся атомарными в силу блокировки и т. д. в реализации. Единственные компромиссы в том, что такие методы, как size() и isEmpty(), могут не обязательно возвращать точные результаты, поскольку единственный способ, который они могли бы использовать для всех операций по блокировке всей таблицы.

ConcurrentMap интерфейс также добавляет новые операции с атомарным соединением, такие как putIfAbsent() (поместите что-то только в том случае, если ключ еще не на карте), remove() принимает оба ключа и значение (удалите запись, только если ее значение равный параметру, который вы передаете) и т. д. Эти операции потребовали блокировки всей таблицы, потому что им требовались два вызова метода для выполнения (например, putIfAbsent() нуждались бы в вызовах как containsKey(), так и put(), обернутые внутри одного synchronized block, если вы использовали стандартную реализацию Map.) Еще раз вы получаете большую пропускную способность, используя эти методы, избегая блокировки всей таблицы.

16
задан JasonDavis 14 August 2009 в 02:35
поделиться

3 ответа

Да. Сигнатура метода для unset () выглядит следующим образом:

void unset ( mixed $var [, mixed $var [, mixed $... ]] )
36
ответ дан 30 November 2019 в 15:41
поделиться

Руководство по PHP может оказаться очень полезным. Вы можете найти любую встроенную функцию и получить довольно подробное описание того, что эта функция делает и т. Д. И ответ - да, вы можете предоставить unset столько переменных, сколько захотите.

12
ответ дан 30 November 2019 в 15:41
поделиться

Да, см. Руководство по PHP, Пример 1:

http://us2.php.net/manual/en/function.unset.php

2
ответ дан 30 November 2019 в 15:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: