задачи с состоянием гонки при помощь мьютексов, реализованных на базе Atomics, SharedArrayBuffer и worker_threads, но оно глючит, возможно, это ошибка в V8 (atomics), возможно в Node.js (threads), возможно в коде: https://github.com/HowProgrammingWorks/Mutex/blob/master/JavaScript/5-no-race.js Тут Point изменяется 2млн. раз из двух потоков, сдвигается одним потоком млн раз на (+1, +1), а вторым млн раз на (-1, -1) в итоге должно быть (0, 0) как и вначале, но для этого блокировки должны работать. А вот тут состояние гонки с двоичным семафором таки разруливается (без атомикс) https://github.com/HowProgrammingWorks/Semaphore/blob/master/JavaScript/2-binary.js
лол, какие мьютексы и гонки, нода - однопточная, шаренных объектов нет. буфер - сырые данные, и при попадании в любой тред произойдёт создание локального объекта внутри треда, после дересерализации шаредбуфера. чем вы там страдаете?
Если кому интересно, то задачу решил Коля Белочуб: Решение тут: https://github.com/HowProgrammingWorks/Mutex/blob/master/JavaScript/5-no-race.js
Обсуждают сегодня