Загрузка...

BAS How can I prevent a line from a txt file from being taken repeatedly in a multithread?

Thread in Private Keeper, BAS, OB created by darkside Dec 20, 2023. 332 views

  1. darkside
    darkside Topic starter Dec 20, 2023 :omg: guest ➤ :omg: 2805 Dec 22, 2019
    Как в BAS можно сделать так, чтобы в режиме многопотока из txt файл нужные данные повторно не использовались?
     
  2. ChatGPT
    ChatGPT Dec 20, 2023 2251 Mar 14, 2023
    darkside, чтобы в режиме многопотока из txt файла не использовались повторные данные, можно использовать следующий подход:

    1. Прочитай все строки из txt файла и сохраните их в массив.
    2. Создай глобальную переменную, которая будет хранить индекс текущей строки.
    3. В каждом потоке, перед использованием данных из файла, проверь, что индекс текущей строки не превышает размер массива.
    4. Если индекс текущей строки превышает размер массива, значит все строки из файла уже были использованы. В этом случае, можно выполнить нужные действия, например, вывести сообщение об окончании данных.
    5. Если индекс текущей строки не превышает размер массива, используй данные из массива по текущему индексу и увеличь индекс на 1.
    6. Повторяй шаги 3-5 в каждом потоке, пока не будут использованы все строки из файла.

    Вот пример кода на языке BAS:

    BASIC

    ' Прочитать все строки из файла и сохранить их в массив
    Dim lines() As String = File.ReadAllLines("file.txt")

    ' Глобальная переменная для хранения индекса текущей строки
    Dim currentIndex As Integer = 0

    ' В каждом потоке
    For i = 1 To ThreadsCount()
    ' Проверить, что индекс текущей строки не превышает размер массива
    If currentIndex < lines.Length Then
    ' Использовать данные из массива по текущему индексу
    Dim data As String = lines(currentIndex)

    ' Увеличить индекс на 1
    currentIndex += 1

    ' Выполнить нужные действия с данными
    ' ...
    Else
    ' Все строки из файла уже были использованы
    ' Выполнить нужные действия, например, вывести сообщение об окончании данных
    ' ...
    End If
    Next
    Надеюсь, это поможет! Если у тебя возникнут еще вопросы, не стесняйся задавать.
     
  3. 666
    666 Dec 20, 2023 Качественная отработка ***** - https://lolz.live/threads/8135594 52,284 Jun 27, 2019
    у тебя это задается в ресурсах насколько мне известно
    The post was merged to previous Dec 20, 2023
    [IMG]
     
    1. View previous comments (1)
    2. 666
      darkside, ну тогда удаляй строку после использования удачного и все
    3. 666
      darkside, хз в чем у тебя проблема там
    4. darkside Topic starter
      666, так если как я выше написал, то удаление строки не поможет, т.к поток держит строки в кэше
  4. llimonix
    llimonix Dec 20, 2023 :peace: Реклама от ллимоникса: lolz.live/threads/9000379 23,973 Jan 20, 2020
    {{ресурс|notreuse}}
     
    1. View previous comments (3)
    2. llimonix
      darkside, когда создаешь ресурс , там есть выбор типа аккаунт. 1 раз брать. Если у вас потоки берут один и тот же - вы не правильно настроили ресурс. Или выставили одновременных использований больше 1 либо еще где то допустили ошибку
    3. darkside Topic starter
      llimonix, ну сейчас тесты делаю, вроде нормально берутся
    4. darkside Topic starter
      llimonix, ну а так я знал что нужно так делать, но был не уверен что это будет нормально работать
Loading...
Top