Martin Rigs

Client
Регистрация
22.06.2018
Сообщения
53
Благодарностей
1
Баллы
8
Не как не могу понять как реализовать многопоточность с зацикливанием!

Допустим в проекте идёт цикл который берёт из файла строку по её номеру и обрабатывает,
как я понимаю нужно номер строки указать в глобальную переменную и использовать lock что бы не было конфликтов с потоками когда переменная будет инкрементирована.​

Возможно я услышу о том что нужно использовать списки т.к. они уже подготовлены для работы с многопоточьностью, но мне нужна другая реализация именно с использованием цикла в каждом из потоков, буду очень благодарен если кто либо объяснит мне как это сделать!​
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 362
Благодарностей
5 423
Баллы
113
как я понимаю нужно номер строки указать в глобальную переменную и использовать lock что бы не было конфликтов с потоками когда переменная будет инкрементирована.
Да верно.

В начале шаблона, назначьте глобальную переменную Nomer со значением 0.
И поставьте паузу по больше, что бы запоздавшие потоки не обнулили ее во время работы.

C#:
lock(SyncObject) {
    var gbVar = project.GlobalVariables["*****@mail.ru", "Nomer"];
    gbVar.Value = Convert.ToInt32(gbVar.Value.ToString())+1;
    project.Variables["Num_NUM"].Value = gbVar.Value.ToString();
}
Num_NUM - эта переменная назначает полученный номер в рамках 1 потока.
 
  • Спасибо
Реакции: Martin Rigs

Martin Rigs

Client
Регистрация
22.06.2018
Сообщения
53
Благодарностей
1
Баллы
8
Да верно.

В начале шаблона, назначьте глобальную переменную Nomer со значением 0.
И поставьте паузу по больше, что бы запоздавшие потоки не обнулили ее во время работы.

C#:
lock(SyncObject) {
    var gbVar = project.GlobalVariables["*****@mail.ru", "Nomer"];
    gbVar.Value = Convert.ToInt32(gbVar.Value.ToString())+1;
    project.Variables["Num_NUM"].Value = gbVar.Value.ToString();
}
Num_NUM - эта переменная назначает полученный номер в рамках 1 потока.
Спасибо большое за ответ! Можно подробнее о какой паузе вы имеете ввиду?

Немного не понятно:
Код:
var gbVar = project.GlobalVariables["значение", "значение"];
Что это за параметры?
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 362
Благодарностей
5 423
Баллы
113
Спасибо большое за ответ! Можно подробнее о какой паузе вы имеете ввиду?
Назначаете глобалку стандартным экшеном. Пауза между этим экшеном и первым использованием сниппета, т.е. сразу после назначения самое логичное. Думаю минуты будет достаточно, но лучше проверить наверняка.

Что это за параметры?
Первый параметр это ваша почта, которую можно увидеть в стандартном экшене. Второе это глобальная перменная. (в шарпе пишутся перменные без приставок variable.)
 
  • Спасибо
Реакции: Martin Rigs

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 380
Благодарностей
2 038
Баллы
113
зачем свой мозг заваливаете если даже представление не имеете и по форуму поиском не пользуетесь
записываешь в список от 0 до +100500 цифры
список - взять строку с удалением
каждый поток будет работать со своей строкой
 

Martin Rigs

Client
Регистрация
22.06.2018
Сообщения
53
Благодарностей
1
Баллы
8
зачем свой мозг заваливаете если даже представление не имеете и по форуму поиском не пользуетесь
записываешь в список от 0 до +100500 цифры
список - взять строку с удалением
каждый поток будет работать со своей строкой
Я прекрасно понимаю о чём ты говоришь, но мне нужна иная реализация.
И Mikhail B. как раз таки сказал то что я ожидал услышать.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 380
Благодарностей
2 038
Баллы
113
только он забыл тебе сказать что при каждом запуске надо перезагружать зенопостер
не понимаю в чём разница между его и моим методом
просто у тебя потом будет головняк как обнулять одним потоком глобалку не перезагружая зенопостер
это хорошо если один проект там пашет
а если 20 и из за одного надо перезагружать, но полная ведь задница ?

P.S. ты просто ещё не сталкивался ну и смотрю даже поиском по форуму не воспользовался, когда увидешь что 2 потока установили 0 тогда будешь голову ломать и говорить кули они там делают
 
  • Спасибо
Реакции: Martin Rigs

Martin Rigs

Client
Регистрация
22.06.2018
Сообщения
53
Благодарностей
1
Баллы
8
только он забыл тебе сказать что при каждом запуске надо перезагружать зенопостер
не понимаю в чём разница между его и моим методом
просто у тебя потом будет головняк как обнулять одним потоком глобалку не перезагружая зенопостер
это хорошо если один проект там пашет
а если 20 и из за одного надо перезагружать, но полная ведь задница ?

P.S. ты просто ещё не сталкивался ну и смотрю даже поиском по форуму не воспользовался, когда увидешь что 2 потока установили 0 тогда будешь голову ломать и говорить кули они там делают
Пожалуй прислушаюсь к твоим словам)
 

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