Как посчитать сумму из результатов разных потоков?

Alisa Bodrova

Client
Регистрация
08.12.2023
Сообщения
86
Благодарностей
52
Баллы
18
Добрый день.

Есть рассыльщик писем. В нем можно подключиться к профилю и задать количество писем, которое надо отправить за одно подключение.

В рассыльщике есть счетчик, который выводит в лог количество писем, отправленных конкретным профилем.

ВОПРОС: как посчитать общее количество отправленных писем, совершаемых всеми потоками? Результат надо выводить в лог каждое +1 письмо. Либо выводить в лог общую сумму отправленных писем, при завершении каждого потока.

Например, надо отправить 10 писем за один вход в аккаунт. В одном потоке 5 аккаунтов, а потоков 20.
 
Последнее редактирование:

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 380
Благодарностей
467
Баллы
83
1. Глобальная переменная
2. База данных - увеличиваем счётчик, читаем его, выводим в лог / Пишем строку по успешной отправке, считаем количество строк
3. Список привязанный к файлу - пишем в него строку по успешной отправке, считаем количество строк, выводим в лог
4. Файл в котором лежит значение количества успешных отправок, привязываем его к переменной, увеличиваем значение по отправке, сохраняем в тот же файл, выводим в лог
 
  • Спасибо
Реакции: Alisa Bodrova

Alisa Bodrova

Client
Регистрация
08.12.2023
Сообщения
86
Благодарностей
52
Баллы
18
1. Глобальная переменная
2. База данных - увеличиваем счётчик, читаем его, выводим в лог / Пишем строку по успешной отправке, считаем количество строк
3. Список привязанный к файлу - пишем в него строку по успешной отправке, считаем количество строк, выводим в лог
4. Файл в котором лежит значение количества успешных отправок, привязываем его к переменной, увеличиваем значение по отправке, сохраняем в тот же файл, выводим в лог
ох... сколько всего)) спасибо за наводку, буду разбираться
 

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 380
Благодарностей
467
Баллы
83
Начните с пункта 3 - самый деревянный но рабочий вариант, дальше уже по ситуации
 
  • Спасибо
Реакции: Alisa Bodrova

Alisa Bodrova

Client
Регистрация
08.12.2023
Сообщения
86
Благодарностей
52
Баллы
18
Реализовала с помощью глобального счетчика. Вот шаблон, если кому-то понадобится
 

Вложения

  • Спасибо
Реакции: user_agent

Ахилес

Client
Регистрация
11.11.2020
Сообщения
867
Благодарностей
353
Баллы
63
Реализовала с помощью глобального счетчика. Вот шаблон, если кому-то понадобится
без локирования это будет работать неправильно в многопотоке.
а сброс счетчика как реализован ? перезапуском Зеннопостера ?
 
  • Спасибо
Реакции: Alisa Bodrova

eee

Client
Регистрация
04.06.2018
Сообщения
134
Благодарностей
31
Баллы
28
без локирования это будет работать неправильно в многопотоке.
а сброс счетчика как реализован ? перезапуском Зеннопостера ?
Можно поподробнее про "сброс счетчика перезапуском Зеннопостера" пожалуйста
 

Ахилес

Client
Регистрация
11.11.2020
Сообщения
867
Благодарностей
353
Баллы
63
Можно поподробнее про "сброс счетчика перезапуском Зеннопостера" пожалуйста
даже незнаю что тут можно добавить... подробного...
глобалки живут пока живет программа зеннопостер... больше добавить нечего
 

Alisa Bodrova

Client
Регистрация
08.12.2023
Сообщения
86
Благодарностей
52
Баллы
18
без локирования это будет работать неправильно в многопотоке.
а сброс счетчика как реализован ? перезапуском Зеннопостера ?
точно...)) вот сейчас с этим и столкнулась

кстати, в многопотоке работает правильно, а вот сброс я не продумала
 
Последнее редактирование:

eee

Client
Регистрация
04.06.2018
Сообщения
134
Благодарностей
31
Баллы
28
даже незнаю что тут можно добавить... подробного...
глобалки живут пока живет программа зеннопостер... больше добавить нечего
то есть глобалка типа обнуляется при запуске первого потока проекта в ZP, а второй поток уже видит ее с некоторым значением, присвоенным ей в первом потоке?
 

Ахилес

Client
Регистрация
11.11.2020
Сообщения
867
Благодарностей
353
Баллы
63
то есть глобалка типа обнуляется при запуске первого потока проекта в ZP, а второй поток уже видит ее с некоторым значением, присвоенным ей в первом потоке?
не обнуляется
и не при запуске.

закрыл ЗП, глобалки исчезли. а уж как сделана инициализация глобалок при запуске... это уже дело того кто реализует свою логику.
 
  • Спасибо
Реакции: eee

Alisa Bodrova

Client
Регистрация
08.12.2023
Сообщения
86
Благодарностей
52
Баллы
18
то есть глобалка типа обнуляется при запуске первого потока проекта в ZP, а второй поток уже видит ее с некоторым значением, присвоенным ей в первом потоке?
в моем варианте обнуляется при перезапуске программы, но продолжает вести счет при добавлении новых потоков
 
  • Спасибо
Реакции: user_agent и eee

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 764
Благодарностей
2 407
Баллы
113
Создайте список. Привяжите к файлу.
Добавляйте туда строчки после отправки письма.
И дальше просто считайте количество строк.
Если список будет расти - тогда просто суммируете количество строк, очищаете список, записываете туда строку с суммой.
Как-то так я бы решал на коленке, если не нужно было бы использовать базу.

Глобальные переменные не использовал бы - так как при закрытии зенно счётчик обнулится (потеряется состояние).
 
  • Спасибо
Реакции: Alisa Bodrova

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