Счетчик в многопотоке



  • Подскажите как сделать счётчик в многопотоке?
    Есть 10 потоков каждый поток отрабатывает n-раз,выводит слово к примеру "банан" как мне сдетать чтобы выводило
    Поток:1 банан 1
    Поток:2 банан 2
    Поток:1 банан 3
    и так далее,
    Или хотя бы для каждого потока свой счетчик
    Поток:1 банан 1
    Поток:2 банан 1
    Поток:3 банан 1
    Поток:1 банан 2
    Поток:2 банан 2
    Поток:3 банан 2
    Думаю такая тема уже была(в поиске сам найти не смог(наверно криворукий)) дай те плс ссылку на пост



  • @assd

    Подскажите как сделать счётчик в многопотоке?

    В OnApplicationStart устанавливаешь глобальную переменную, а в потоках уже увеличиваешь эту глобальную переменную.

    Или хотя бы для каждого потока свой счетчик

    Объявляешь свою переменную в main да увеличиваешь её.



  • @fox А если у меня допустим многопоток, и я хочу получать значения которые отдаёт каждый поток по отдельности, т.е. кол-во выполнений того или иного действия, кроме как через Ифы это нельзя никак реализовать?



  • @mordor

    А если у меня допустим многопоток, и я хочу получать значения которые отдаёт каждый поток по отдельности, т.е. кол-во выполнений того или иного действия

    Установил переменную в начале работы скрипта, и увеличиваешь её после выполнения какого нибудь действия. Всё. Можешь создать сколько угодно таких счётчиков.



  • @fox Я имею ввиду по такому принципу http://prntscr.com/kmahva



  • @mordor Очищаешь лог перед выводом и всё. Принцип тот же, увеличиваешь либо глобальную, либо обычную (локальную) переменную.



  • @fox Если будет перезагрузка потока то глобальная переменная объявится на 0 опять. Можно через запись в файл, читать файл сделать. Но тогда гемороя очень много.



  • @bag162

    В OnApplicationStart устанавливаешь глобальную переменную, а в потоках уже увеличиваешь эту глобальную переменную.

    Если будет перезагрузка потока то глобальная переменная объявится на 0 опять

    Нет, не объявится на 0 опять. Так как OnApplicationStart выполняется один раз при запуске скрипта, до начала работы всех потоков.



  • @fox Не знал никогда)



  • This post is deleted!


  • @seoshnek

    Я не обьявлял ее в Onapplicationstart

    Зря..

    логика и не сработает, ведь эта функция выполняется до всех потоков, а значит каждый поток получит по нулю в ней

    Я засыпаю и не могу переварить смысл вашей фразы.. Оставлю алгоритм необходимых действий:

    1. Устанавливаете глобальную переменную счётчика в Onapplicationstart
    2. Увеличиваете её в потоках в нужных местах действием увеличить глобальную переменную
    3. Всё


  • @seoshnek said in Счетчик в многопотоке:

    ведь эта функция выполняется до всех потоков, а значит каждый поток получит по нулю в ней. Верно?

    Каждый поток из Onapplicationstart ничего не получит. Каждый поток в свою очередь обратиться к глобальной переменной и получит значение из неё. Глобальная переменная хранится вне потоков и любых функций.
    А смысл Onapplicationstart в том, что действия в ней выполняются один раз до старта потоков, хоть он 1, хоть 100.



  • offtop
    @Antonio Какие люди :D Ты где пропадал почти пол года? С апреля месяца то..



  • offtop
    @Fox оффлайн беспощадно захватил все внимание) Сейчас постепенно возвращаюсь. Жаль только, что Бас как-то не продвинулся в нужных мне направлениях совсем.


Log in to reply
 

  • 11
  • 3
  • 3
  • 5
  • 4
  • 3
  • 3
  • 11