Как избавиться от состояния гонки?

Поддержка
  • Так ты опять же читаешь данные переменной в локальную переменную меняешь её и записываешь заново, если бы это был глобальный список, то нужен был бы ЛОК, что бы потоки не переписывали устаревшие данные (это в случае если список не пополняется, а меняются его данные по индексам именно).

  • @mordor Не нужен никакой лок, этот пример демонстрирует, что нет гонки и работа происходит синхронно, в противном случае, потоки бы перетерли данные в этой переменной и это было бы видно в логе, я не просто так сделал такой вывод лога.

    И тут не имеет значения список тут или строка, я сделал через строку для упрощения примера.

  • @UserTrue said in Как избавиться от состояния гонки?:

    @mordor Не нужен никакой лок, этот пример демонстрирует, что нет гонки и работа происходит синхронно, в противном случае, потоки бы перетерли данные в этой переменной и это было бы видно в логе, я не просто так сделал такой вывод лога.

    И тут не имеет значения список тут или строка, я сделал через строку для упрощения примера.

    Вотже бл*тство, ты себе представить не можешь сколько раз я мудрил лок, потому что думал что данные будут пересекаться из-за этой херни. Слушай, удали линку на свой проект, там в нём модули твои. что бы никто не подмутил, мало ли.

  • @mordor said in Как избавиться от состояния гонки?:

    Вотже бл*тство, ты себе представить не можешь сколько раз я мудрил лок, потому что думал что данные будут пересекаться из-за этой херни.

    Она перетрется только, если между чтением и установкой глоб переменной будет асинхронное действие

  • @mordor said in Как избавиться от состояния гонки?:

    @UserTrue said in Как избавиться от состояния гонки?:

    @mordor Не нужен никакой лок, этот пример демонстрирует, что нет гонки и работа происходит синхронно, в противном случае, потоки бы перетерли данные в этой переменной и это было бы видно в логе, я не просто так сделал такой вывод лога.

    И тут не имеет значения список тут или строка, я сделал через строку для упрощения примера.

    Вотже бл*тство, ты себе представить не можешь сколько раз я мудрил лок, потому что думал что данные будут пересекаться из-за этой херни. Слушай, удали линку на свой проект, там в нём модули твои. что бы никто не подмутил, мало ли.

    Я где то на форуме уже приводил пример работы с объектом в глобальной переменной в многопотоке. Каждое свойство объекта - номер потока, значение - рандомная строка. Скрипт после установки значения спал случайное время и проверял изменилось ли значение. Если изменилось, то скрипт прерывался. В итоге я гонял 100 потоков 10 минут и ни одной ошибки не возникло

  • @Fox said in Как избавиться от состояния гонки?:

    @mordor said in Как избавиться от состояния гонки?:

    @UserTrue said in Как избавиться от состояния гонки?:

    @mordor Не нужен никакой лок, этот пример демонстрирует, что нет гонки и работа происходит синхронно, в противном случае, потоки бы перетерли данные в этой переменной и это было бы видно в логе, я не просто так сделал такой вывод лога.

    И тут не имеет значения список тут или строка, я сделал через строку для упрощения примера.

    Вотже бл*тство, ты себе представить не можешь сколько раз я мудрил лок, потому что думал что данные будут пересекаться из-за этой херни. Слушай, удали линку на свой проект, там в нём модули твои. что бы никто не подмутил, мало ли.

    Я где то на форуме уже приводил пример работы с объектом в глобальной переменной в многопотоке. Каждое свойство объекта - номер потока, значение - рандомная строка. Скрипт после установки значения спал случайное время и проверял изменилось ли значение. Если изменилось, то скрипт прерывался. В итоге я гонял 100 потоков 10 минут и ни одной ошибки не возникло

    Буду очень благодарен, если дашь линку в личку.

  • @mordor said in Как избавиться от состояния гонки?:

    @Fox said in Как избавиться от состояния гонки?:

    @mordor said in Как избавиться от состояния гонки?:

    @UserTrue said in Как избавиться от состояния гонки?:

    @mordor Не нужен никакой лок, этот пример демонстрирует, что нет гонки и работа происходит синхронно, в противном случае, потоки бы перетерли данные в этой переменной и это было бы видно в логе, я не просто так сделал такой вывод лога.

    И тут не имеет значения список тут или строка, я сделал через строку для упрощения примера.

    Вотже бл*тство, ты себе представить не можешь сколько раз я мудрил лок, потому что думал что данные будут пересекаться из-за этой херни. Слушай, удали линку на свой проект, там в нём модули твои. что бы никто не подмутил, мало ли.

    Я где то на форуме уже приводил пример работы с объектом в глобальной переменной в многопотоке. Каждое свойство объекта - номер потока, значение - рандомная строка. Скрипт после установки значения спал случайное время и проверял изменилось ли значение. Если изменилось, то скрипт прерывался. В итоге я гонял 100 потоков 10 минут и ни одной ошибки не возникло

    Буду очень благодарен, если дашь линку в личку.

    линку в личку? В смысле ссылку на личный чат со мной? Или ты про пример скрипта?

  • Для этих целей есть Mysql.
    Хочешь серьёзную базу. Пора отвыкать от детского сада.

  • @Fox said in Как избавиться от состояния гонки?:

    @mordor said in Как избавиться от состояния гонки?:

    @Fox said in Как избавиться от состояния гонки?:

    @mordor said in Как избавиться от состояния гонки?:

    @UserTrue said in Как избавиться от состояния гонки?:

    @mordor Не нужен никакой лок, этот пример демонстрирует, что нет гонки и работа происходит синхронно, в противном случае, потоки бы перетерли данные в этой переменной и это было бы видно в логе, я не просто так сделал такой вывод лога.

    И тут не имеет значения список тут или строка, я сделал через строку для упрощения примера.

    Вотже бл*тство, ты себе представить не можешь сколько раз я мудрил лок, потому что думал что данные будут пересекаться из-за этой херни. Слушай, удали линку на свой проект, там в нём модули твои. что бы никто не подмутил, мало ли.

    Я где то на форуме уже приводил пример работы с объектом в глобальной переменной в многопотоке. Каждое свойство объекта - номер потока, значение - рандомная строка. Скрипт после установки значения спал случайное время и проверял изменилось ли значение. Если изменилось, то скрипт прерывался. В итоге я гонял 100 потоков 10 минут и ни одной ошибки не возникло

    Буду очень благодарен, если дашь линку в личку.

    линку в личку? В смысле ссылку на личный чат со мной? Или ты про пример скрипта?

    Пример скрипта, или ссылку на тему где это обсуждается, было бы реально интересно почитать.

  • @FastSpace said in Как избавиться от состояния гонки?:

    Для этих целей есть Mysql.
    Хочешь серьёзную базу. Пора отвыкать от детского сада.

    Нафиг ты ее всем навязываешь? Она в 99% случаев нафиг не нужна и хватает БАСовской и в 1% тут уже на любителя, можно с БАСовской монго через дравер работать либо с другой БД хоть и mysql. С задачами которые для скриптов справится абсолютно любая БД!!!

  • @UserTrue Да по хорошему то счету, даже файла достаточно в большинстве случаев. mysql это скорее для веб-приложение где постоянно большой оборот данных.
    Чёт походу я за больное задел этот форум.

  • @UserTrue said in Как избавиться от состояния гонки?:

    Она в 99% случаев нафиг не нужна и хватает БАСовской и в 1% тут уже на любителя, можно с БАСовской монго через дравер работать либо с другой БД хоть и mysql. С задачами которые для скриптов справится абсолютно любая БД!!!

    Хватает, но не с тем скудным набором действий из раздела "База". Ноду придеться подключать, тот же самый гемор как и Mysql.
    Если выбирать между 2 геморами я выберу Mysql.

  • @FastSpace said in Как избавиться от состояния гонки?:

    Ноду придеться подключать, тот же самый гемор как и Mysql.
    Если выбирать между 2 геморами я выберу Mysql.

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

  • @mordor said in Как избавиться от состояния гонки?:

    @Fox said in Как избавиться от состояния гонки?:

    @mordor said in Как избавиться от состояния гонки?:

    @Fox said in Как избавиться от состояния гонки?:

    @mordor said in Как избавиться от состояния гонки?:

    @UserTrue said in Как избавиться от состояния гонки?:

    @mordor Не нужен никакой лок, этот пример демонстрирует, что нет гонки и работа происходит синхронно, в противном случае, потоки бы перетерли данные в этой переменной и это было бы видно в логе, я не просто так сделал такой вывод лога.

    И тут не имеет значения список тут или строка, я сделал через строку для упрощения примера.

    Вотже бл*тство, ты себе представить не можешь сколько раз я мудрил лок, потому что думал что данные будут пересекаться из-за этой херни. Слушай, удали линку на свой проект, там в нём модули твои. что бы никто не подмутил, мало ли.

    Я где то на форуме уже приводил пример работы с объектом в глобальной переменной в многопотоке. Каждое свойство объекта - номер потока, значение - рандомная строка. Скрипт после установки значения спал случайное время и проверял изменилось ли значение. Если изменилось, то скрипт прерывался. В итоге я гонял 100 потоков 10 минут и ни одной ошибки не возникло

    Буду очень благодарен, если дашь линку в личку.

    линку в личку? В смысле ссылку на личный чат со мной? Или ты про пример скрипта?

    Пример скрипта, или ссылку на тему где это обсуждается, было бы реально интересно почитать.

    Здесь уже основное сообщили, а накатать скрипт с озвученной логикой не долго.
    тестовый скрипт

  • @Fox said in Как избавиться от состояния гонки?:

    @mordor said in Как избавиться от состояния гонки?:

    @Fox said in Как избавиться от состояния гонки?:

    @mordor said in Как избавиться от состояния гонки?:

    @Fox said in Как избавиться от состояния гонки?:

    @mordor said in Как избавиться от состояния гонки?:

    @UserTrue said in Как избавиться от состояния гонки?:

    @mordor Не нужен никакой лок, этот пример демонстрирует, что нет гонки и работа происходит синхронно, в противном случае, потоки бы перетерли данные в этой переменной и это было бы видно в логе, я не просто так сделал такой вывод лога.

    И тут не имеет значения список тут или строка, я сделал через строку для упрощения примера.

    Вотже бл*тство, ты себе представить не можешь сколько раз я мудрил лок, потому что думал что данные будут пересекаться из-за этой херни. Слушай, удали линку на свой проект, там в нём модули твои. что бы никто не подмутил, мало ли.

    Я где то на форуме уже приводил пример работы с объектом в глобальной переменной в многопотоке. Каждое свойство объекта - номер потока, значение - рандомная строка. Скрипт после установки значения спал случайное время и проверял изменилось ли значение. Если изменилось, то скрипт прерывался. В итоге я гонял 100 потоков 10 минут и ни одной ошибки не возникло

    Буду очень благодарен, если дашь линку в личку.

    линку в личку? В смысле ссылку на личный чат со мной? Или ты про пример скрипта?

    Пример скрипта, или ссылку на тему где это обсуждается, было бы реально интересно почитать.

    Здесь уже основное сообщили, а накатать скрипт с озвученной логикой не долго.
    тестовый скрипт

    Спасибо

  • 0 Votes
    10 Posts
    753 Views
  • 0 Votes
    21 Posts
    2103 Views
  • 0 Votes
    2 Posts
    396 Views
  • 0 Votes
    6 Posts
    858 Views
  • 0 Votes
    9 Posts
    3071 Views