Почему нагрузка на CPU должна снизиться в однопоточном приложении где нечего парралелить? Каждое чтение и запись данных в файл или сокет будет приводить к двум системным вызовам вместо одного. Один для асинхронного запроса, а второй ожидание результата. Так же переход между методами(вызовы и возвраты) для асинхронности чуть дороже.
Все тесты показывают цену асинхронности, он может иметь преимущества только в сравнении с потоками, имеющими короткий срок жизни.
Limons, Лучше приучать себя себя использовать конструкции C++, потому, что конвертация типов из Си уж очень уж гибкая. Например она может преобразовать char в char* или LPCSTR в LPWSTR. При этом данные превратятся в кашу. User700 правильно написал const_cast<char*>(windowTitle.data())Сишное преобразование в C++ это анти-паттерн программирования.
User700, Если компилятор поддерживает современный C++, то скомпилируется. Насчёт LengthA это правда, но для русского и английского языка разница просто незаметна. Только на системах с языками в которых очень много символов это может стать проблемой, только вот, а есть ли у них однобайтовая кодировка?
Плохо Вы искали. Гаджеты на Windows 7 в принципе не умеют нормально масштабироваться. Единственный способ их починить это переписать. Так же можно запретить им подстраиваться под dpi https://answers.microsoft.com/en-us/windows/forum/...
А, что с Вашей точки зрения "компьютер"? Это процессор? Материнская плата? Память? ОС? Диск? После изменения какого компонента номер должен измениться? Компьютер это не фиксированные компоненты это только список запчастей принадлежащих конкретному человеку. Windows вон прибивается к серийнику материнской платы. Но всё равно они учитывают, что пользователь может продать свой компьютер и ввести код активации на другом. При этом автоматическая активация на старом должна слететь.
Nik Faraday, Протоколы TCP и UDP не обмениваются DNS-именами и не передают списка адресов клиента. Всё, что сервер может знать о клиенте, это используемый им для этого соединения IP-адрес и порт. Именно этот адрес и выводит httpContextAccessor.HttpContext.Connection.RemoteIpAddress. Никакого другого получить неполучится. Если хочется получить имя хоста, то можно попытаться сделать как то так, но IP-адрес не обязан иметь привязанное к нему имя и это имя не обязано указывать на все адреса клиента. Dns.GetHostName() это единственное исключение, позволяющее получить полную информацию.
Файл у Вас судя по всему в UTF-8. Сам он себя в системную локаль не сконвертит. Вообще у Windows совершенно убогая консоль в компании с совершенно убогой реализацией std::cout. Она гарантированно работает только с системной OEM кодировкой. В русской версии это cp866.
Текст напоминания о закрытии окна выводит не Ваша программа, а cmd.exe который пользуется исключительно WinAPI, который в отличии от их реализаций libc и STL, довольно стабилен.
В двоичном виде это единичка и 1 000 000 000 000 000 нулей за ней. В шестнадцатеричной едичика и 250 000 000 000 000 нулей. Это совсем не высшая математика. В десятичную это лучше даже не пытаться переводить без 250 терабайт оперативной памяти. Ни один SSD диск не выдержит триллионы записей необходимые для подсчёта.
Сергей Васильев, Тогда ответ pfg21. Создаёшь на каждом компьютере и сервере один wireguargd интерфейс и в него прописываешь каждый компьютер как отдельный peer. При этом подсеть ставишь общую, например 10.128.0.0/24. Сервер - 10.128.0.1/24, компы - 10.128.0.2..10.128.0.5 при этом компы подключенные друг к другу сообщат свой локальный ip и на выбранный ip трафик пойдёт напрямую. Но если прямого коннекта не будет, то ОС вернёт destination unreachable. Компьютеры никогда не будут использовать сервер в качестве шлюза для подсети 10.128.0.0/24.
Но если хочется автоконфигурации, то придётся немного покодить так как wireguard её не поддерживает не в каком виде.
То есть хотите создать крипто-банк. А у Вас достаточно квалификации для создания банка? А то ведь придут злые хакеры подберут пароль к в Вашей админке, сольют все ключи себе и уведут все деньги клиентов. И это повезёт если придут именно хакеры, а не классический криминал с утюгами.
У меня VS2022 и проект не собрался из за отсутствия в нём функции main, добавил её в MyForm.cpp. После добавления всё собралось. Так же добавил функционал из своего примера https://dropmefiles.com/Cww7N тут изменённые файлы и .exe.
Resolut, control.CreateGraphics(), graphics.FillRect, graphics.FillRect, graphics.DrawArc, Graphics.DrawLine. Кстати я сейчас страшную вещь скажу: Windows XP не вырисовывала свои знаменитые скруглённые края окон, она их загружала из BMP. Вы тоже так можете, на случай DPI стоит сделать варианты с коэффициентом размера 1, 1.25, 1.50, 2. И использовать только Graphics.DrawString и Graphics.DrawImage.
Кристофер Картер, В конфигах прокси-серверов нужно точно так же указывать конкретные адреса. И если их будет 18 триллионов, то у Вас гарантированно не хватит памяти. А насчёт пинговаться всё довольно просто, все ICMP Echo заворачиваем в DNAT. Правда нужно, чтобы эту /64 на сервер маршрутизировали, а не просто посадили сервер в эту сеть.
В инструкции Вашей скрипт генерирует всего лишь 4200 уникальных адресов. Чтобы использовать все адреса подсети нужно патчить прокси-сервер, но тогда не сложно добавить и вызов скрипта временно прописывающего дополнительный адрес.
DarkWinter, Ну тогда вырубайте XMP и ставьте частоту в 1333 и прогоните memtest. Если пройдёт без ошибок, то руками подбирайте частоту и тайминги. Но вот если не поможет, то это может быть ВСЁ, что угодно. Даже контактная площадка процессора не находится вне подозрений. Кстати, медные контакты памяти со временем окисляются и иногда ухудшение работы DDR и PCI связанно именно с этим. Ни разу такого не делал, но люди советуют содрать тонкий поверхностный слой меди ластиком.
Все тесты показывают цену асинхронности, он может иметь преимущества только в сравнении с потоками, имеющими короткий срок жизни.