Потокобезопасность станд.:: карта для операций только для чтения

Можно установить некоторые свойства о прокси-сервере как jvm параметры

-Dhttp.proxyPort=8080, proxyHost, и т.д.

, но если Вы должны пройти через прокси аутентификации, Вам нужен аутентификатор как этот пример:

ProxyAuthenticator.java

import java.net.*;
import java.io.*;

public class ProxyAuthenticator extends Authenticator {

    private String userName, password;

    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(userName, password.toCharArray());
    }

    public ProxyAuthenticator(String userName, String password) {
        this.userName = userName;
        this.password = password;
    }
}

Example.java

    import java.net.Authenticator;
    import ProxyAuthenticator;

public class Example {

    public static void main(String[] args) {
        String username = System.getProperty("proxy.authentication.username");
        String password = System.getProperty("proxy.authentication.password");

                if (username != null && !username.equals("")) {
            Authenticator.setDefault(new ProxyAuthenticator(username, password));
        }

                // here your JVM will be authenticated

    }
}

На основе этого ответа: http://mail-archives.apache.org/mod_mbox/jakarta-jmeter-user/200208.mbox / % 3C494FD350388AD511A9DD00025530F33102F1DC2C@MMSX006%3E

18
задан jilles de wit 4 December 2009 в 13:44
поделиться

3 ответа

Это будет работать с несколько потоков, пока ваша карта остается прежней. Карта, которую вы используете, де-факто неизменна, так что любая находка фактически сделает находку на карте, которая не меняется.

Вот соответствующая ссылка: http://www.sgi.com/tech/stl/ thread_safety.html

SGI-реализация STL потокобезопасен только в том смысле, что одновременный доступ к разным контейнеры безопасны, и одновременно доступ для чтения к общим контейнерам безопасны. Если несколько потоков обращаются к один контейнер и минимум один поток потенциально может писать, тогда пользователь несет ответственность за обеспечение взаимное исключение между нитками во время доступа к контейнеру.

Вы попадаете в категорию «одновременный доступ для чтения к общим контейнерам».

Примечание: это верно для реализации SGI. Вам нужно проверить, используете ли вы другую реализацию. Из двух реализаций, которые, как мне известно, широко используются в качестве альтернативы, STLPort имеет встроенную безопасность потоков. Однако я не знаю о реализации Apache.

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

Все должно быть в порядке. Вы можете использовать ссылки на него const , если хотите задокументировать / применить режим только для чтения.

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

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

Да, это так.

См. Соответствующий пост с тем же вопросом о std :: set:

Является ли C ++ std :: set потокобезопасным?

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

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