Задать вопрос
  • Как прочитать адреса S7 - 1500 с помощью .NET?

    @res2001
    С ПЛК библиотека по сети связывается?
    В Profinet передаваемые данные кодируются в big endian если что.
  • Что не так с Futex?

    @res2001
    jcmvbkbc, он же там крутится в вечном цикле, а счетчики не меняются
  • Что не так с Futex?

    @res2001
    jcmvbkbc,
    объясни, кто с кем гоняется, я не вижу гонки.

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

    Можешь не называть это гонкой, я не знаю другого подходящего термина.

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

    Для чего тут атомарные операции?

    Атомарные операции - т.к. они включают в себя барьер. Или барьер или атомарные операции c owner.

    Кстати, ошибка
    Total: 0 asc: 0 dsc: 0 eq: 0

    возможно говорит о том, что кастомный мьютекс не обеспечивает барьер памяти. А должен.
    Хотя у него там сгенерированная строка не копируется в узел списка, поэтому все манипуляции со списком происходят на пустых узлах без данных. Но хотя бы Total и eq расти должны.

    Обе упомянутые ошибки 100% детерминированные и воспроизводятся с одним потоком.

    Этот код не запускал, т.к. сейчас на винде сижу, а у него тут фьютексы. Но запускал предыдущую версию с нормальными pthread мьютексами - все работало.
  • Что не так с Futex?

    @res2001
    jcmvbkbc, Ну да тут гонка на чтении, аналогично и в unlock(). Нужен барьер или атомарные операции.
    Вероятно не правильное срабатывание (или не срабатывание) условия.
    Отсюда и появление ошибки.
  • Что не так с Futex?

    @res2001
    Еще и гонка внутри мьютекса за owner и count, т.к. они никак не защищены, не синхронизируются и даже не volatile.
  • Context switch per second (Linux) 1.3млн это много или мало?

    @res2001
    asmelnik, Учитывая слишком высокое значение сейчас, я бы стремился на вашем месте его уменьшить, а не увеличить. Такое впечатление, что нагрузку на проц создают именно переключения контекста, а не реальная работа.
    Если прерывания учитываются в этой цифре, то возможно у вас их слишком много. Попробуйте получить статистику по прерываниям другими способами и определить какие именно срабатывают наиболее часто. Возможно найдете способ повлиять на их количество, а это в свою очередь разгрузит процессор и позволит вашим рабочим процессам выполнять больше работы при меньшем значении CS.
  • Context switch per second (Linux) 1.3млн это много или мало?

    @res2001
    Что же означает параметр "Context switch per second"?
    Если это количество переключений задач в секунду планировщиком ОС, то он не адекватно высок. Разве что у вас 1300 ядер в проце.
  • Как правильно округлять числа с плавающей точкой с заданной точностью?

    @res2001
    Для справки точность double ~15-16 значащих десятичных цифр, точность float - ~5-6
    Даже если вы будете округлять с помощью round, полученное целое число может быть точно не представимо в плавающем формате, оно будет представлено в приближенном варианте. Вот этот приближенный вариант вы и видите в выводе. Никогда не следует рассчитывать, что в переменной с плавающей точкой лежит точное значение.
  • Почему множественный вызов конструктора создаёт только один объект?

    @res2001
    yatanai, Ну значит в MSVC эта оптимизация не отключается.
    Надо усложнить тест. Создайте несколько реальных объектов и используйте std::move для вызова конструктора перемещения.
  • Не видно конкретный узел в другой подсети. Почему?

    @res2001
    zipchik,
    1.111 в сети нету.

    В этом случае трейс к нему бесполезен.
    С 1.111 видимо то же нет доступа к узлам соседней сети. Тогда полезней было бы увидеть трейс с 1.111, а не наоборот.
  • Как убрать ошибку spawn unknown vscode c++?

    @res2001
    flow_sad, Да фиг знает. Я голым mingw не пользовался. Посмотрите в меню пуск, должна быть его папочка и там какая-нибудь консоль.
    Скорее всего при запуске из виндовой cmd не находится стандартная плюсовая библиотека, которая лежит где-то в недрах mingw.

    Рекомендую использовать msys2+mingw. msys2 - это линуксовая оболочка со всеми необходимыми инструментами + пакетный менеджер. В репозиториях msys2 куча готовых библиотек и разнообразных программ, которые легко ставятся пакетным менеджером.
    Или можете использовать MSVS. Только берите старую версию, судя по всему у вас слабый комп. Берите MSVS 2015 например. В MSVS свой собственный компилятор и он нативный для винды. Для новичка в самый раз.
  • Как убрать ошибку spawn unknown vscode c++?

    @res2001
    У вас там mingw? Собираете в консоли mingw или в виндовой командной строке?
    Попробуйте собрать в консоли mingw и там же запустить.
  • Как убрать ошибку spawn unknown vscode c++?

    @res2001
    flow_sad, а ну да, это же плюсы
    g++ main.cpp -o main
    После сборки запустите программу и посмотрите будет ли ошибка.
    У вас какая ОС?
  • Как убрать ошибку spawn unknown vscode c++?

    @res2001
    flow_sad, Попробуйте собрать в командной строке.
    У вас какой компилятор?
    С gcc собирать так:
    gcc main.c -o main
  • Не видно конкретный узел в другой подсети. Почему?

    @res2001
    zipchik, Тут вроде все нормально.
    Посмотрите tracerout от 1.111 до какого-нибудь ресурса в соседней сети. И наоборот.
  • Как убрать ошибку spawn unknown vscode c++?

    @res2001
    flow_sad, Вы, видимо, пытаетесь запустить программу под отладчиком. Но VSCode не смог найти отладчик. О чем вам и сообщает.
    Можете просто запустить программу, без отладчика.
    VSCode не содержит ни компилятора ни отладчика, он использует сторонние инструменты, которые вы ему должны предоставить.
  • Как убрать ошибку spawn unknown vscode c++?

    @res2001
    flow_sad, Хорошо бы показать код и текст ошибки компилятора или ошибки выполнения. По вашему описанию трудно понять что вы делаете и что происходит.
  • Не видно конкретный узел в другой подсети. Почему?

    @res2001
    zipchik,
    скрин таблицы маршрутизации прикладывал выше

    Выше нашел только таблицы маршрутизации микротиков.
    Я же говорю о таблицах маршрутизации на 1.111 (не доступный) и таком же компе в той же сети, но к которому есть доступ.
    Понятно, что на роутерах с таблицей маршрутизации все нормально - другие же узлы доступны друг другу.
  • Не видно конкретный узел в другой подсети. Почему?

    @res2001
    zipchik, Что пробовал то?
    Что в таблице маршрутизации на не доступном компе и на доступном из той же сети?
    Если винда, то команда для вывода таблицы маршрутизации в консоль:
    route print -4

    Вариантов у вас всего 2, учитывая, что все остальные узлы доступны: либо кривая таблица маршрутизации на этом узле, либо где-то на узлах через которые проходит трафик фаерволом блокируется трафик именно с этого адреса.
    Проверить таблицу маршрутизации проще.