Общий счетчик в рамках нескольких шаблонов

Hartwell

Client
Регистрация
25.09.2014
Сообщения
194
Благодарностей
118
Баллы
43
Не подскажите как реализовать общий счетчик, который складывает числа в рамках одного потока но работая с N-кол-вом шаблонов (одинаковых).

1. Есть шаблон, из-за специфики реализации, удобнее было реализовать тупо "клонируя" шаблон и выставляя в входных настройках номер port для коннекта.
По сути 1 шаблон = что -то вроде 1 поток, ну и он работает в потоке с цифрой 1.

2. Существует переменная с числом, которое является результатом сложений при работе всех проектов.
Т.е. допустим изначально это 0.
Оно привязано к параметру. К примеру
Василий14300
Пётр30950
[TBODY] [/TBODY]
При запуске проекта выполняется логика сравнения этой переменной с макс. допустимым значением.


В данном случае берется первая строка из таблицы, в рамках всех запущенных шаблонов идет работа непосредственно с числовыми данными. Проще говоря берем "Василий|14300" и выполняем не определенное кол-во циклов и (запусков проектов) во всех запущенных шаблонах пока число не станет превышать ~29000.

Про суммирование:
Я запускаю 3 проектов шаблонов prj1, prj2, prjX...


При выполнении шаблона получаем переменную с числом, за весь прогон 1 шаблона происходит примерно либо 0 либо 1-3 добавления к взятой примеренной. Переменную увеличиваем на неизвестное число, т.к. оно определятся по ходу выполнения проекта.
Например при прогоне первого prj1 шаблона произошло 3 добавления к "Василий|14300", первое "+ 100" второе "+ 350" третье "+50" на выходе шаблона должно быть "Василий|14800" (14300 +500).

Но при этом в prj2 может быть + 0, а в prj3 к примеру получилось еще "+ 300". Но если проекты были запущены одновременно то изначальное значение общий переменной будет что в prj1 что в prj3 одинаковой "Василий|14300", и при завершении получается будет либо первое либо второе.

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

Пока что разделяю на файлы, но тоже не всегда корректно выполняется сложение.

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

eagleowl

Client
Регистрация
03.11.2012
Сообщения
263
Благодарностей
30
Баллы
28

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
Смотрите в сторону глобальных переменных.
Другой проверенный вариант - хранение значения счетчика в файле.
 

Чешир

Client
Регистрация
27.06.2014
Сообщения
1 634
Благодарностей
963
Баллы
113
в файле
 

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