Обнулить глобальную переменную

evegod

Новичок
Регистрация
27.06.2018
Сообщения
11
Благодарностей
0
Баллы
1
Как сделать счетчик с глобальной переменной разобрался.
Теперь как корректно после выполнения всех потоков вернуть переменную в исходное состояние?

Задача общая такая:
1.Есть список акков
2.Необходимо чтобы каждый поток брал по своему акку ( можно сделать через глобальную можно сделать через список с удалением) и делал определенные действия
3.Необходимо, чтобы зенка прошлась по всему списку и завершила работу. Сейчас у меня получается сделать если я поставлю кол-во "сколько делать" = "кол-во акков", но для этого я должен знать сколько акков у меня, хотелось бы нажать +1 и чтобы зенка прошлась по всем аккам по одному разу
 

Geka1989

Client
Регистрация
17.12.2016
Сообщения
184
Благодарностей
23
Баллы
18
Как сделать счетчик с глобальной переменной разобрался.
Теперь как корректно после выполнения всех потоков вернуть переменную в исходное состояние?

Задача общая такая:
1.Есть список акков
2.Необходимо чтобы каждый поток брал по своему акку ( можно сделать через глобальную можно сделать через список с удалением) и делал определенные действия
3.Необходимо, чтобы зенка прошлась по всему списку и завершила работу. Сейчас у меня получается сделать если я поставлю кол-во "сколько делать" = "кол-во акков", но для этого я должен знать сколько акков у меня, хотелось бы нажать +1 и чтобы зенка прошлась по всем аккам по одному разу
Можно зациклить шаблон, (хоть это обычно не совсем правильно), кубик получить строку с удалением увести по красной ветке к примеру на уведомление закончились аккаунты в этом случае если аккаунтов 20, а поставить количество выполнений 50, 20 поток возьмут 20 акков, а остальные просто отвалятся и закончат свою работу
 

evegod

Новичок
Регистрация
27.06.2018
Сообщения
11
Благодарностей
0
Баллы
1
Можно зациклить шаблон, (хоть это обычно не совсем правильно), кубик получить строку с удалением увести по красной ветке к примеру на уведомление закончились аккаунты в этом случае если аккаунтов 20, а поставить количество выполнений 50, 20 поток возьмут 20 акков, а остальные просто отвалятся и закончат свою работу

Спасибо. Я вообщем склоняюсь, к тому что просто брать с удалением из списка, т.к. обнуление глобальной переменной оказалось вообще нетривиальная задача.


Тогда такой вопрос. Я храню все данные по аккаунтам в таблице. Чтобы брать с удалением я копирую этот файл. Как можно решить, чтобы копирование происходило только один раз в одном потоке и остальные не делали "перекопий"?
Первое что приходит на ум, запускать шаблон отдельный на копирование, и указать запуск основного шаб ввиде батника.
 

Geka1989

Client
Регистрация
17.12.2016
Сообщения
184
Благодарностей
23
Баллы
18
Спасибо. Я вообщем склоняюсь, к тому что просто брать с удалением из списка, т.к. обнуление глобальной переменной оказалось вообще нетривиальная задача.


Тогда такой вопрос. Я храню все данные по аккаунтам в таблице. Чтобы брать с удалением я копирую этот файл. Как можно решить, чтобы копирование происходило только один раз в одном потоке и остальные не делали "перекопий"?
Первое что приходит на ум, запускать шаблон отдельный на копирование, и указать запуск основного шаб ввиде батника.
Проверять наличие существования файла, если файл есть, по зеленой ветке выполнять проект, если файла нет, уйти по красной, скопировать файл и продолжить
 

evegod

Новичок
Регистрация
27.06.2018
Сообщения
11
Благодарностей
0
Баллы
1
Проверять наличие существования файла, если файл есть, по зеленой ветке выполнять проект, если файла нет, уйти по красной, скопировать файл и продолжить
Если у нас 10 аккаунтов.
Программа корректно работает до 10 раза.
Потом идёт 11 попытка, доходим до проверки файла и файла там не будет ( так как брали строки с удалением)
Копируем файл и идём в цикл по новой
 

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Благодарностей
48
Баллы
28
Можно сделать так:
Первый шаблон при своем запуске обнуляет глобалку и запускает "-1" кол-во выполнения второго шаблона.

При этом, логика второго шаблона должна представлять из себя, цикл, который останавливается, когда берется несуществующая строка (т.е. глобалка равна 1000, а строк всего 999). При этом когда один из потоков, натыкается на конец файла (1000я строка, как пример), то на паузу ставятся все потоки второго шаблона.

Итого имеем, два шаба: первый - запускает основной(второй) шаблон, второй - выполняет всю работу в цикле, пока не закончатся строки, и выключает все потоки второго шаблона (останавливает, сами потоки закончат выполнения когда получат несуществующий номер строки).

Ну я так сделал бы, в похожих ситуациях. Можно конечно и по другому придумать)
 

evegod

Новичок
Регистрация
27.06.2018
Сообщения
11
Благодарностей
0
Баллы
1
Можно сделать так:
Первый шаблон при своем запуске обнуляет глобалку и запускает "-1" кол-во выполнения второго шаблона.

При этом, логика второго шаблона должна представлять из себя, цикл, который останавливается, когда берется несуществующая строка (т.е. глобалка равна 1000, а строк всего 999). При этом когда один из потоков, натыкается на конец файла (1000я строка, как пример), то на паузу ставятся все потоки второго шаблона.

Итого имеем, два шаба: первый - запускает основной(второй) шаблон, второй - выполняет всю работу в цикле, пока не закончатся строки, и выключает все потоки второго шаблона (останавливает, сами потоки закончат выполнения когда получат несуществующий номер строки).

Ну я так сделал бы, в похожих ситуациях. Можно конечно и по другому придумать)
Спасибо в два шаблона понятно. Хотелось бы обнулять одним. Но этот способ в два шаблона примерно равен тому что можно просто брать из списка с удалением строки.

Вопрос такой если второй шаблон с -1 мы запустим он будет не бесконечно выполняться, т.к. зациклен? Наверное надо улсовие по неудачным попыткам сделать
 

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Благодарностей
48
Баллы
28
Спасибо в два шаблона понятно. Хотелось бы обнулять одним. Но этот способ в два шаблона примерно равен тому что можно просто брать из списка с удалением строки.

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

В теории можно и одним шабом сделать обнуление, но это сложнее, по идее, надо в lock запускать потоки, и чтобы один поток выполнил обнуление глобалки (или копирование файла, чтобы брать строки с удалением), и только потом остальные потоки начали работать, я такого не делал, поэтому хз работает ли вообще такое в зенно.

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

Насчет копирования файла, чтобы брать строки с удалением, я хз как сейчас, а раньше несколько потоков, могли откопировать файл или взять одну и туже строку с удалением, возможно я тогда что-то не учитывал, это было давно. Поэтому из-за этих косяков я пока через глобалки работаю со списками. Но все зависит от ситуации, я обычно обрабатываю весь список, а не часть.
 
  • Спасибо
Реакции: evegod

evegod

Новичок
Регистрация
27.06.2018
Сообщения
11
Благодарностей
0
Баллы
1
Он не будет бесконечно выполнятся т.к. строк у тебя не бесконечное кол-во, или нет? Если тебе нужно за раз пройти весь список, то это норм решение, иначе такой метод не подходит.

В теории можно и одним шабом сделать обнуление, но это сложнее, по идее, надо в lock запускать потоки, и чтобы один поток выполнил обнуление глобалки (или копирование файла, чтобы брать строки с удалением), и только потом остальные потоки начали работать, я такого не делал, поэтому хз работает ли вообще такое в зенно.

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

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

Такой вопрос. Пытаюсь создать батник и проставить, добавить попытки или установить попытки на -1, но батник читает как 0. Конечно проблема решается если добавить 1кк попыток, но всё же бесконечность нельзя засунуть в батник?
 

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Благодарностей
48
Баллы
28
Такой вопрос. Пытаюсь создать батник и проставить, добавить попытки или установить попытки на -1, но батник читает как 0. Конечно проблема решается если добавить 1кк попыток, но всё же бесконечность нельзя засунуть в батник?
Лучше через кубик c#
C#:
var projectName = project.Variables["name"].Value; // имя проекта в зенно
ZennoPoster.SetTries(projectName, -1);
ZennoPoster.StartTask(projectName);
https://zennolab.com/discussion/threads/besplatnye-snipety-na-zakaz.23450/page-44#post-329870
 
Последнее редактирование:
  • Спасибо
Реакции: irving zisman

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)