Критический баг с переменными в 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 и таких багов не встречал, сделайте демо скрипт с этим багом