Критический баг с переменными в node.js



  • Нашёл критический баг с переменными в node.js. У меня программа работает в многопотоке, каждая работает со своими данными. Данные обрабатываются в node.js. Уже пару дней не могу понять в чём дело, в басе постоянно проскакивают не те данные. То есть число из 1 потока может оказаться во втором, хотя в массивах данных всё окей. Решил вывести данные в лог и получилось такое:

    Поток №11 : 300
    Поток №2 : ["50","75"]
    Поток №2 : 100<300
    Поток №2 : ["150","75"]
    Поток №2 : 96.02<100
    

    Поток 11 показывает какие у него данные сейчас используются. Потом поток 2 показывает какие у него есть данные в массиве. Дальше поток 2 берет данные со страницы (100) и сравнивает со своими (300). Но есть одно НО, у него нет в массиве числа 300. Есть только 150 и 75. Число 300 есть в 11 потоке. Дальше у потока 2 появляется число 100. Тут не видно но число 100 используется в первом потоке
    У меня получилось сделать одни вывод, переменные в node рассматриваются как глобальные, на все потоки, и когда в одном потоке меняется переменные, то и во всех остальных она становится такой. Проблема решаема, можно поменять переменные на переменные баса, но всё же в идеале не городить леса и использовать родные переменные



  • @MP В ноде переменные не глобальные, если только вы их сами сделали глобальными через global



  • @UserTrue если они не глобальные, то это можно объяснить только багом, что переменные меняются из других потоков



  • @MP said in Критический баг с переменными в node.js:

    @UserTrue если они не глобальные, то это можно объяснить только багом, что переменные меняются из других потоков

    я работают с nodejs и таких багов не встречал, сделайте демо скрипт с этим багом


Log in to reply