Изменение значений в цикле несколькими потоками



  • Здравствуйте.
    Два потока (и более) проходят код, потом заходят в цикл.
    Цикл при каждом повторе достает строки по порядку из ресурса (с помощью списков).
    Затем поток увеличивает значение в строке (например, +1) и преобразует обратно строку в ресурс.
    Все бы ничего, но иногда бывает, что потоки идут "впритык" т.е второй поток не успевает взять обновленные после первого потока значения, а берет старое значение строки и получается, что значение увеличивается один раз вместо двух. Как можно избежать данную ситуацию?



  • @Zonteak said in Изменение значений в цикле несколькими потоками:

    Здравствуйте.
    Два потока (и более) проходят код, потом заходят в цикл.
    Цикл при каждом повторе достает строки по порядку из ресурса (с помощью списков).
    Затем поток увеличивает значение в строке (например, +1) и преобразует обратно строку в ресурс.
    Все бы ничего, но иногда бывает, что потоки идут "впритык" т.е второй поток не успевает взять обновленные после первого потока значения, а берет старое значение строки и получается, что значение увеличивается один раз вместо двух. Как можно избежать данную ситуацию?

    https://ru.wikipedia.org/wiki/Состояние_гонки

    Думаю в вашем случае проще использовать глобальную переменную вместо ресурса


Log in to reply