Счетчик: Значения в текстовом файле

  • Автор темы Автор темы one
  • Дата начала Дата начала

one

Client
Регистрация
22.09.2015
Сообщения
7 003
Реакции
1 308
Баллы
113
Поделитесь решением под много поток у кого есть. Нужно получать\хранить значения счетчика в текстом файле.
 
если не знаешь как сделать или трудно, самый простой выход положить в список цифры, каждый поток берёт рандомно или первую с удалением и ложит в список гуд если отработал, какие тут трудности ?
это я к тому сказал если лень по форуму искать или в гугле, то вот так делай
 
а в чем проблема?
опиши логику шаба подробнее
Да надо нагенерировать определенное кол-во профилей, для этого надо запускать шаблон постоянно для генерации нового профиля.

Нужен счетчик данные которого будут храниться в файле. Его логика такова.

1. берем значение из списка, кладем его в переменную.
2. увеличиваем это значение.
3. записываем его обратно в список.

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

Искал, но не нашел ничего подходящего.
да ладно, ты мне не придумывай сказки, все хотят одну строку, ты для начала тогда свой шаб выложи, покажи свои труды что сделал
 
Да надо нагенерировать определенное кол-во профилей, для этого надо запускать шаблон постоянно для генерации нового профиля.
эм...
а зачем конфиг вообще нужен, если запускается только новые профили?
вместо конфиг файла, для такого шаба, советую сделать таблицу, где в нужном столбике в значении "статус" будешь прописывать статус профиля
типа
done
create
bad ну и тп
 
эм...
а зачем конфиг вообще нужен, если запускается только новые профили?
вместо конфиг файла, для такого шаба, советую сделать таблицу, где в нужном столбике в значении "статус" будешь прописывать статус профиля
типа
done
create
bad ну и тп
Так то да, но мне надо тупо по счетчику работать.
 
Был бы ты новичок я бы написал следующее:

В чем проблема проверять колво готовых профилей в папке?
Едрить скрин, а что качества получше в магазине не было? не завезли?:D

upload_2019-1-23_14-13-23.png
Но если нужно прям сохранять в фаил колво профилей то
список с привязкой к файлу, проверяем любым доступным способом колво готовых профилей, кидаем их в фаил
ну и проверяем цифру в файле

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

  1. создали конфиг файл, в нем указали 0
  2. после создания профиля (удачного) берем значение из конфига, прибавляем 1, полученное значение записываем обратно в конфик
  3. запись обратно в файл надо делать через LOCK чтобы в этот момент не было, что записывает другой проект в тот же файл другое значение
а вот по локу уже не подскажу, это на шарпе надо делать, искал у себя, но нет такого, есть лок списков, но он тут не нужен
 
  • Спасибо
Реакции: one
Но из за того что опыта у тебя поболее моего должно быть, я походу чего то не понимаю и написал хуйню
Именно, в точку! :D
Бог ты мой, ну зачем фантазировать то если задан конкретный вопрос. То шаб им нужен, то проблему нашли...

после создания профиля (удачного) берем значение из конфига, прибавляем 1, полученное значение записываем обратно в конфик
Тут будет чехорда в много потоке. Надо весь процесс лочить - получение, увеличение, запись.

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

Да, так да
Нет, так нет

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

Да, так да
Нет, так нет

нахуя разглогольствовать? не понимаю

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

Хез зачем удалили и мой пост а шнягу выше оставили ну да ладно...

Вот, нашел в шаблонах у себя решение с БД. Раз ответа на четкий с пояснениями вопрос не получил. Сплошные предположения, фантазии и не совсем понятные просьбы типа приложи шаблон... Сохалинский, тезка, тему ищешь, лам уже не поднять в мес? ))) Буду использовать это, тем более что с БД работаю постоянно. На сколько данное решение корректно не знаю, но работает для моих задач. Может кому и пригодиться в будущем.

Код:
Развернуть Свернуть Копировать
lock(SyncObject) {
// Получаем ID последнего аккаунта.
project.Variables["USER_LAST_ACCOUNT_USED"].Value = ZennoPoster.Db.ExecuteQuery("SELECT `id` FROM `activity`", null, ZennoLab.InterfacesLibrary.Enums.Db.DbProvider.MySqlClient, "server=" + project.Variables["DB_HOST"].Value + "; user id=" + project.Variables["DB_USER_NAME"].Value + "; password=" + project.Variables["DB_USER_PASSWORD"].Value + "; database=my_db", " ", "\r\n");

// Увеличиваем счетчик
project.Variables["USER_LAST_ACCOUNT_USED"].Value = Convert.ToString(Convert.ToInt32(project.Variables["USER_LAST_ACCOUNT_USED"].Value)+1);
  
// Записываем ID аккаунта в БД.
project.Variables["TMP"].Value = ZennoPoster.Db.ExecuteNonQuery("UPDATE activity SET `id` = " + project.Variables["USER_LAST_ACCOUNT_USED"].Value + ";", null, ZennoLab.InterfacesLibrary.Enums.Db.DbProvider.MySqlClient, "server=" + project.Variables["DB_HOST"].Value + "; user id=" + project.Variables["DB_USER_NAME"].Value + "; password=" + project.Variables["DB_USER_PASSWORD"].Value + "; database=my_db").ToString();  
}
 
Последнее редактирование:
  • Спасибо
Реакции: one
Тоже мучался с решением, а ответа так и нет. Если обернуть lock(SyncObject) сумматор счетчика, то это действительно поможет от ошибок в многопотоке?
Код:
Развернуть Свернуть Копировать
lock(SyncObject) {
string path = project.Directory + "\\fails.txt";
int intcount = Convert.ToInt32(File.ReadAllText(path)) + 1;
File.WriteAllText(path, intcount.ToString());}
 
  • Спасибо
Реакции: one
Тоже мучался с решением, а ответа так и нет. Если обернуть lock(SyncObject) сумматор счетчика, то это действительно поможет от ошибок в многопотоке?
Надо тестировать и наблюдать, но по любому, по крайне мере каждый поток будет брать свое. Вопрос только в очереди этих ожидающих потоков и параллельно работающих шаблонов.

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

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