Возможно ли добавить lock ресурса?
-
@support ок, спасибо, я кажется понял. Т.е. если у меня 3 ресурса есть, то с 2 я могу работать в ручном режиме (т.е. удалять из базы мгновенно), но с одним, для нормальной работы в многопотоке - в автоматическом режиме надо работать (notreuse и возможность записи в файл), вроде так
-
@support Еще, было б круто, если б у экшена "Прервать сркипт" была такая опцию, что б он работал также, как и при попытке взять ресурс из пустого списка. Сейчас же "Прервать скрипт" - все прерывает, даже если ресурсы залочены и в работе. Ну понятно, что эта функция не мега важная, но в будущем может)
-
@lev а нет, я неправильно подумал, все ресурсы нужно использовать в автоматическом режиме, иначе, если использовать ресурс в ручном режиме и он закончится, то он прервет скрипт, и не обратит внимания ни на что. Блин, это плохо тем, что если я беру по 5 строк из ресурса, а у меня в нем 43 строки, то 40 строк возьмется, а последние три строки не возьмутся, т.к. поток попытается 5 штку взять, у него не получится и он прервется ....
-
@support можно было б проверять по количеству строк в ресурсе (если остается строк в ресурсе меньше 5, то брать все строки), но в автоматическом режиме одна строка лочится и удаляется после завершения потока, и так не проверишь
-
Т.е. если у меня 3 ресурса есть, то с 2 я могу работать в ручном режиме (т.е. удалять из базы мгновенно), но с одним, для нормальной работы в многопотоке - в автоматическом режиме надо работать (notreuse и возможность записи в файл), вроде так
Да, но удалять вручную не обязательно, лучше пусть БАС сделает это автоматом.
Еще, было б круто, если б у экшена "Прервать сркипт" была такая опцию, что б он работал также, как и при попытке взять ресурс из пустого списка.
Он так и работает. Еще есть действие Fail, которое прерывает поток, но не прерывает скрипт.
Сейчас же "Прервать скрипт" - все прерывает, даже если ресурсы залочены и в работе. Ну понятно, что эта функция не мега важная, но в будущем может)
Ок, но зачем юзать это действие, если БАС сам прерывает работу приложения когда все ресурсы отработали.
Блин, это плохо тем, что если я беру по 5 строк из ресурса, а у меня в нем 43 строки, то 40 строк возьмется, а последние три строки не возьмутся, т.к. поток попытается 5 штку взять, у него не получится и он прервется ....
Попробуйте установить флаг "Не прерывать приложение" и обернуть в действие "Игнорировать ошибки" если хотите, чтобы приложение не прерывалось, если ресурс закончился.
-
@support said in Возможно ли добавить lock ресурса?:
Да, но удалять вручную не обязательно, лучше пусть БАС сделает это автоматом.
Я тестировал. И получается такая ситуация. Есть 2 ресурса. С одним я решил работать в автоматическом режиме, с другим - в ручном. Если в первом заканчиваются ресурсы, то он ждет, когда остальные потоки доработают, если в ручном заканчиваются ресурсы, то он сразу все прерывает и не обращает внимание, что у других потоков есть ресурсы в локе. Видимо он смотрит только за своими ресурсами. В первом случае он видит, ага, у меня есть в списке ресурсы залоченные, подожду .... Во втором случае он смотрит на свои ресурсы и видит, что список пустой, в нем нет залоченных ресурсов, а то что в соседнем ресурсе есть залоченные строки, он не обращает внимания. У меня был проект, но могу еще раз сделать, если не верите
Он так и работает. Еще есть действие Fail, которое прерывает поток, но не прерывает скрипт.
"Прервать скрипт" не обращает внимание на то, залочены какие-либо ресурсы у потока или нет, ща проект накидаю...
Попробуйте установить флаг "Не прерывать приложение" и обернуть в действие "Игнорировать ошибки" если хотите, чтобы приложение не прерывалось, если ресурс закончился.
Но тогда он будет, я так понимаю, работать, пока не достигнет количества успехов установленного, но у меня их 10000, например, все потоки в пустую будут запускаться.
Вы можете помочь решить такой пример.
Есть ресурс, в нем 12 строк (пусть цифры от 1 до 12)
Скрипт запускается в 5 потоков
Количество успехов - 100000
Количество неудач - 100000Необходимо, чтобы поток брал по 5 строк с удалением из файла ресурса.
Далее писал в лог - взяты строки [перечислены эти пять строк]
Переходил на яндекс ру
И писал в лог "Загрузили яндекс"И чтобы он успешно взял последние 3 строчки
Это бы все очень прояснило. Заранее спасибо, а то я уже никак не могу ничего понять.
-
-
@lev Не стал отвечать на вопросы, по скрипту должно быть понятно. Хотя согласен, что это не очень удобно. Возможно добавлю действие, которое будет брать пачку строк.
-
@support Спасибо за пример. Да, было б круто, если б появился такой экшн. А то очень много писанины для такой простой операции. Проще бы было, если б был экшн "Прервать скрипт", но который не прерывал бы уже запущенные потоки. Тогда можно было б в ручную проверять количество строк в ресурсе через "ресурс в список", и мгновенно удалять строку ресурса, если ресурс не пустой. Больше было б возможности. Еще раз спасибо, а то я со вчерашнего вечера сижу-думаю)))
-
@lev Тогда лучше сделать параметр для всего скрипта, который ждет окончания каждого потока. Потому что "Прервать скрипт" юзают мало
-
@support Всмысле? Ну это то, о чем я и говорил, типа не прервать скрипт, а прервать скрипт, и ждать, когда запущенные потоки закончат работу?. Если да, то вы сделаете к следующему обновлению?) А то я тогда подожду лучше)
-
Всмысле? Ну это то, о чем я и говорил, типа не прервать скрипт, а прервать скрипт, и ждать, когда запущенные потоки закончат работу?
Да.
Если да, то вы сделаете к следующему обновлению?) А то я тогда подожду лучше)
Скорее всего не успею