Задать вопрос
  • Имеет ли смысл использовать асинхронные вызовы в консольных программах Don net core, если алгоритм обработки последователен?

    @none7
    Создание потоков и переключение между ними это относительно дорогая операция. Процессору нужно изменить таблицы виртуальной памяти и права доступа к страницам памяти. При этом абсолютно все кеши сбрасываются, что для современного процессора компилирующего код приложений в микрооперации с сохранением их в кеше, очень болезненно. Так же каждый поток выделяет виртуальную память под стэк и чем больше виртуальной памяти в пространстве приложения, тем больнее процессору. Иначе говоря вытесняющая многозадачность это зло, но при работе с длительными вычислениями это необходимое зло.
    В идеале принудительных переключений контекста с заморозкой потока посреди кода должно быть как можно меньше. В серверных сборках Linux даже частоту таймера уменьшают для этих целей. Но процесс никак не может контролировать ядро ОС, остаётся только уменьшать количество активных потоков. По этому для не слишком долгих задач, стоит использовать кооперативную многозадачность с временем переключением контекста близким к нулю. Придумали её не вчера и в том или ином виде она была даже в Windows 3.11. Конструкцию async/await и кучу всего в комплекте придумали для упрощения кооперативной многозадачности. Писать тоже самое на Си это одна из адских пыток.
    Повторюсь: без многозадачности в процессе это всё не нужно, просто некому отдать этот поток, кроме ядра ОС. И для задач, что долго, синхронно выполняются это тоже не нужно, ядро в любом случае будет поток прерывать для выдачи процессорного времени другим процессам.
  • Имеет ли смысл использовать асинхронные вызовы в консольных программах Don net core, если алгоритм обработки последователен?

    @none7
    Почему нагрузка на CPU должна снизиться в однопоточном приложении где нечего парралелить? Каждое чтение и запись данных в файл или сокет будет приводить к двум системным вызовам вместо одного. Один для асинхронного запроса, а второй ожидание результата. Так же переход между методами(вызовы и возвраты) для асинхронности чуть дороже.
    Все тесты показывают цену асинхронности, он может иметь преимущества только в сравнении с потоками, имеющими короткий срок жизни.
  • Как пользоваться функцией EnumWindows?

    @none7
    Limons, Лучше приучать себя себя использовать конструкции C++, потому, что конвертация типов из Си уж очень уж гибкая. Например она может преобразовать char в char* или LPCSTR в LPWSTR. При этом данные превратятся в кашу. User700 правильно написал const_cast<char*>(windowTitle.data())Сишное преобразование в C++ это анти-паттерн программирования.
  • Как пользоваться функцией EnumWindows?

    @none7
    User700, Если компилятор поддерживает современный C++, то скомпилируется. Насчёт LengthA это правда, но для русского и английского языка разница просто незаметна. Только на системах с языками в которых очень много символов это может стать проблемой, только вот, а есть ли у них однобайтовая кодировка?
  • Как исправить: при масштабе 125% не работают гаджеты?

    @none7
    Плохо Вы искали. Гаджеты на Windows 7 в принципе не умеют нормально масштабироваться. Единственный способ их починить это переписать. Так же можно запретить им подстраиваться под dpi https://answers.microsoft.com/en-us/windows/forum/...
  • Откуда такое большое потребление оперативной памяти?

    @none7
    Добавь вывод в лог значений ms.Length и ms.Position на каждой итерации цикла. Тут тебя может ждать сюрприз.
  • Возможно ли сгенерировать уникальный номер компьютера windows?

    @none7
    А, что с Вашей точки зрения "компьютер"? Это процессор? Материнская плата? Память? ОС? Диск? После изменения какого компонента номер должен измениться? Компьютер это не фиксированные компоненты это только список запчастей принадлежащих конкретному человеку. Windows вон прибивается к серийнику материнской платы. Но всё равно они учитывают, что пользователь может продать свой компьютер и ввести код активации на другом. При этом автоматическая активация на старом должна слететь.
  • Как получить IP адрес юзера через httpContextAccessor в asp.NET Core?

    @none7
    Nik Faraday, Протоколы TCP и UDP не обмениваются DNS-именами и не передают списка адресов клиента. Всё, что сервер может знать о клиенте, это используемый им для этого соединения IP-адрес и порт. Именно этот адрес и выводит httpContextAccessor.HttpContext.Connection.RemoteIpAddress. Никакого другого получить неполучится. Если хочется получить имя хоста, то можно попытаться сделать как то так, но IP-адрес не обязан иметь привязанное к нему имя и это имя не обязано указывать на все адреса клиента. Dns.GetHostName() это единственное исключение, позволяющее получить полную информацию.
  • Почему вывод кириллицы cout в C++ производит символы неясного происхождения?

    @none7
    Файл у Вас судя по всему в UTF-8. Сам он себя в системную локаль не сконвертит. Вообще у Windows совершенно убогая консоль в компании с совершенно убогой реализацией std::cout. Она гарантированно работает только с системной OEM кодировкой. В русской версии это cp866.
    Текст напоминания о закрытии окна выводит не Ваша программа, а cmd.exe который пользуется исключительно WinAPI, который в отличии от их реализаций libc и STL, довольно стабилен.
  • Как посчитать число 2 в 1 000 000 000 000 000 степени?

    @none7
    В двоичном виде это единичка и 1 000 000 000 000 000 нулей за ней. В шестнадцатеричной едичика и 250 000 000 000 000 нулей. Это совсем не высшая математика. В десятичную это лучше даже не пытаться переводить без 250 терабайт оперативной памяти. Ни один SSD диск не выдержит триллионы записей необходимые для подсчёта.
  • Как соединить компьютеры в локальную сеть?

    @none7
    Сергей Васильев, Тогда ответ 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 её не поддерживает не в каком виде.
  • Как привести к типу const char* в C++?

    @none7
    VanBer, Так, что насчёт передачи через str(fmt).c_str(), где fmt Ваш format?
  • Как привести к типу const char* в C++?

    @none7
    VanBer, И чем принципиально отличается cout от этой Вашей функции?
  • Как привести к типу const char* в C++?

    @none7
    В смысле не работают стандартные способы? cout << fmt выдаёт не тот же результат, что и cout << str(fmt).c_str() ?
  • Нужно ли для каждого клиента создавать отдельный кошелек?

    @none7
    То есть хотите создать крипто-банк. А у Вас достаточно квалификации для создания банка? А то ведь придут злые хакеры подберут пароль к в Вашей админке, сольют все ключи себе и уведут все деньги клиентов. И это повезёт если придут именно хакеры, а не классический криминал с утюгами.
  • Как вызвать CreateThread внутри Form?

    @none7
    У меня VS2022 и проект не собрался из за отсутствия в нём функции main, добавил её в MyForm.cpp. После добавления всё собралось. Так же добавил функционал из своего примера https://dropmefiles.com/Cww7N тут изменённые файлы и .exe.
  • Как вызвать CreateThread внутри Form?

    @none7
    mIka01, Вы этот код как то изменили?
  • C#| winforms | Кнопка с меню | Как создать кнопку такого вида?

    @none7
    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.
  • Как использовать любой адрес с подсети IPv6?

    @none7
    Кристофер Картер, В конфигах прокси-серверов нужно точно так же указывать конкретные адреса. И если их будет 18 триллионов, то у Вас гарантированно не хватит памяти. А насчёт пинговаться всё довольно просто, все ICMP Echo заворачиваем в DNAT. Правда нужно, чтобы эту /64 на сервер маршрутизировали, а не просто посадили сервер в эту сеть.
    В инструкции Вашей скрипт генерирует всего лишь 4200 уникальных адресов. Чтобы использовать все адреса подсети нужно патчить прокси-сервер, но тогда не сложно добавить и вызов скрипта временно прописывающего дополнительный адрес.