что происходит, если больше чем один поток пытается получить доступ к одноэлементному объекту

Давайте перевернем проблему с ног на голову - у Вас есть боты, покупая материал, который Вы хотите, чтобы настоящие люди купили, как насчет того, чтобы делать реальный шанс, что боты купят материал, который Вы не делаете , хотят настоящие люди купить.

Имеют случайный шанс для некоторых не отображенный HTML, что боты очистки будут думать, реальная ситуация, но настоящие люди не будут видеть (и не забывайте, что среди настоящих людей слепые, поэтому рассмотрите программы для чтения с экрана и т.д. также), и это перемещается до покупки что-то непомерно дорогое (или не делает фактическую покупку, но заставляет детали оплаты для Вас ставить banlist).

, Даже если боты переключаются для 'предупреждения пользователя', а не, 'делают покупку', если можно получить достаточно ложных аварийных сигналов, Вы можете делать ее достаточно бесполезной для людей (возможно, не, все, но некоторое сокращение мошенничества не лучше, чем ни один вообще) не беспокоиться.

7
задан Mike Dinescu 24 August 2009 в 15:34
поделиться

4 ответа

Если только синхронизация (блокировка) не выполняется в синглтоне, ответ таков: он доступен для всех.

Хотя синглтон гарантирует, что только один экземпляр объекта является Используемый по запросу, шаблон сам по себе не обеспечивает никакой безопасности потока. Это оставлено на усмотрение разработчика.

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

Удачи!

5
ответ дан 7 December 2019 в 07:48
поделиться

Общее практическое правило, которое я использую для синглтонов, заключается в том, что он не должен влиять на работающий код и не иметь побочных эффектов. По сути, для меня в моих проектах это переводится в какую-то функцию ведения журнала или статический поиск значений (т.е. загружает некоторые общие данные из базы данных один раз и сохраняет их для справки, поэтому их не нужно читать каждый раз, когда это необходимо) .

2
ответ дан 7 December 2019 в 07:48
поделиться

Ответ на ваш вопрос как таковой: "это действительно зависит". Что за синглтон? т.е. что он делает, и как он это делает? И на каком языке?

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

Таким образом, если он написан правильно (с правильно реализованной синхронизацией потоков), нет причин, по которым он не должен вести себя правильно - даже если запросы к объекту принимают действительно долго обрабатывать!

0
ответ дан 7 December 2019 в 07:48
поделиться

Синглтон ничем не отличается от любого другого объекта, кроме того, что существует только один экземпляр. Что произойдет, когда вы попытаетесь получить к нему доступ, во многом будет зависеть от того, какие потоки доступа пытаются выполнить (т.е. читать или писать) и какие данные хранит ваш синглтон.

0
ответ дан 7 December 2019 в 07:48
поделиться
Другие вопросы по тегам:

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