означает, что LongAdder агрегирует значения внутри и обновляет их позже?
blockquote>Да, если я правильно понимаю ваше утверждение.
Каждый
Cell
вLongAdder
является вариантомAtomicLong
. Наличие нескольких таких ячеек является способом распространения конкуренции и, следовательно, увеличения пропускной способности.Когда конечный результат (сумма) должен быть восстановлен, он просто добавляет вместе значения каждой ячейки.
Большая часть логики вокруг того, как организованы ячейки, как они выделены и т. д., можно увидеть в источнике: http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/f398670f3da7 /src/java.base/share/classes/java/util/concurrent/atomic/Striped64.java
В частности, количество ячеек связано числом процессоров:
/** Number of CPUS, to place bound on table size */ static final int NCPU = Runtime.getRuntime().availableProcessors();
Как было предложено LU-RD , я сменил подпрограмму и начал работать с обновлением tokio 10.2 3.
function ApplyProxy(proxy: string):Boolean;
var
MyInternetProxyInfo: PInternetProxyInfo;
begin
try
Result:=False;
proxy:=Trim(proxy);
MyInternetProxyInfo:=New(PInternetProxyInfo);
try
if proxy = EmptyStr then
MyInternetProxyInfo^.dwAccessType := INTERNET_OPEN_TYPE_DIRECT else
begin
MyInternetProxyInfo^.dwAccessType := INTERNET_OPEN_TYPE_PROXY;
MyInternetProxyInfo^.lpszProxy := PAnsiChar(AnsiString(Trim(proxy)));
MyInternetProxyInfo^.lpszProxyBypass := PAnsiChar('<local>');
end;
Result:=InternetSetOption(nil, INTERNET_OPTION_PROXY, MyInternetProxyInfo, SizeOf(MyInternetProxyInfo^));
finally
Dispose(MyInternetProxyInfo);
end;
except
Result:=False;
end;
end;
В Delphi 10.2 Токио-строки являются unicode, и компилятор предупредит, что
PAnsiChar(Trim(proxy));
is
W1044 Подозрительный тип вывода строки в PAnsiChar.
blockquote>, и это не будет работать при выполнении. Сначала преобразуйте строку в
AnsiString
.Например:
MyInternetProxyInfo^.lpszProxy := PAnsiChar(AnsiString(Trim(proxy)));