Текущее время: Вт, июн 25 2024, 21:05

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 117 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8
Автор Сообщение
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Ср, май 10 2023, 15:59 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1248
Цитата:
скажем так: где в справке по abap сказано, что поддерживается multithreading и multitasking?

Ну я как бы и сказал, что в абап до появления демонов многозадачности нет. С демонами и APC что-то похожее есть (ну да, или глобус сломается или сова порвется, но есть). Но в nw то оно все-таки есть. Но nw это не про абап уже.
Цитата:
касательно передачи по ссылке:
это означает, что таски работают с одним и тем же объектом, а не с его копией.

Еще раз: что такое передача по ссылке я знаю, ага. Давно уже знаю. Но мой вопрос был: и где передача по ссылке значится как обязательное требование в многозадачности\многопоточности?

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Ср, май 10 2023, 16:34 
Модератор
Модератор

Зарегистрирован:
Пн, июн 27 2011, 08:25
Сообщения: 477
Кодер написал(а):
Но мой вопрос был: и где передача по ссылке значится как обязательное требование в многозадачности\многопоточности?


да честно говоря, требования к двери, чтобы открывалась тоже нет )))

но суть в том, чтобы можно было задействовать дополнительные мощности CPU и при этом снизить накладные расходы на создание потока , что придаст скорости выполнения.

одна из проблем, которую обязана решать система с multitasking и multithreading - это состояние гонки (race condition).
общая память доступна для нескольких потоков/задач; и если они все-таки одновременно выполняются, то нужно сделать обновление переменных адекватным.

вот на англ.wiki (хотя и не хочется на нее ссылаться в принципе - https://en.wikipedia.org/wiki/Computer_multitasking) в части multithreading и memory protection прояснят ситуацию.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Ср, май 10 2023, 16:46 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1248
Цитата:
одна из проблем, которую обязана решать система с multitasking и multithreading - это состояние гонки (race condition).
общая память доступна для нескольких потоков/задач; и если они все-таки одновременно выполняются, то нужно сделать обновление переменных адекватным.

У тебя определенно телега впереди лошади. Сперва есть многозадачность\многопточность, а уж потом возникает проблема race condition, как их следствие. Между тем, race condition в абап вполне есть. Ну да, он другой (в данном случае, речь идет о том, что число процессов, которые можно запустить паралелльно - конечны, и за этим надо следить). Так что с этой точки зрения - вижу как раз соответствие абап в части наличи\ и возможности решения этой проблемы.
А уж про nw - так он вообще с этим на ура справляется :lol:
Ну и по прежнему нет обязательного требования по передаче ресурсов по ссылке как условия для многозадачности\многопоточности. (отдельно порадовало: вот тут вики не смотри, она не правильная, а тут смотри - она правильная. Ага :lol: )

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Ср, май 10 2023, 19:14 
Модератор
Модератор

Зарегистрирован:
Пн, июн 27 2011, 08:25
Сообщения: 477
помимо мнения обо мне и "abap/nw - ура" есть ли все-таки ссылка, где сама официальная справка abap/net weaver утверждает, что multitasking и multithreading реализован? а также как создать в этой реализации event-loop и future?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Ср, май 10 2023, 23:46 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1248
Цитата:
помимо мнения обо мне

Nothing personal, just for lulz.
Вроде никакого мнения не высказывал. Исключительно комментировал написанное
Цитата:
есть ли все-таки ссылка, где сама официальная справка abap/net weaver утверждает, что multitasking и multithreading реализован?

Про абап я уже выше говорил, что нету. Про nw есть косвенные упоминания в части приклад для AS Java. Как я понимаю, можно писать свою J2EE прикладу и деплоить ее в AS Java. И она вполне может быть многопоточной, но с определенными ограничениями тыц
В свою очередь: дождусь ли я пруф, где передача по ссылке значится как обязательное требование в многозадачности\многопоточности?
Цитата:
а также как создать в этой реализации event-loop и future?

А зачем? вроде это как раз из области "если оно вам не надо, то зачем создавать"? Кажется снова в определениях multitasking\multithreading не содержится условие необходимости реализаций этих фич. Я не прав? Можно ссылочку, подтверждающую, что я не прав?

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Пт, май 12 2023, 08:18 
Модератор
Модератор

Зарегистрирован:
Пн, июн 27 2011, 08:25
Сообщения: 477
В качестве полезностей для целей отображения структуры директории на application server могут пригодиться:

ФМ RZL_READ_DIR - Читает директорию «почти» так, как отображается в AL11
ФМ EPS_GET_DIRECTORY_LISTING - Читает файлы в директории (без папок)
ФМ /SAPDMC/LSM_F4_SERVER_FILE
Класс CL_RSAN_UT_FILES / Метод: F4 / Параметр I_APPLSERV = ‘X’


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Пт, май 12 2023, 17:21 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, фев 21 2007, 08:50
Сообщения: 1575
Откуда: Пермь
Пол: Мужской
Ой, какая-то тут напряженность)) чтобы ее снять немного. Вопрос к знатокам без проверки в системе - а вы знали, что select max при отсутствии записей все равно возвращает sy-subrc = 0 ? :) если кто-то будет такое использовать, будьте осторожны ;) и, видимо, все агрегатные так работают.

_________________
Алё, это Пакистан? Нам нужен один килограмм


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Пт, май 12 2023, 20:46 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3074
Откуда: Москва
Yozhhhhh написал:
Вопрос к знатокам без проверки в системе - а вы знали, что select max при отсутствии записей все равно возвращает sy-subrc = 0 ? :)

Да, с незапямятных времен (года с 2000) :pivo:
Всегда после агрегации проверяется переменная, в которую делается агрегация, а не SY-SUBRC. :wink:

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Пт, май 12 2023, 22:32 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3074
Откуда: Москва
olegbash написал(а):
в своей программе объявляю внутреннюю таблицу и хочу ее заполнить не передавая по значению данные между процессами - мне здесь память диспетчера процессов (что и есть "процесс, который запускает остальные процессы") - как поможет?

В ABAP так не получится.
Проблема быстродействия решается не на уровне передачи данных по ссылке, а с помощью выделения доп.ресурсов NW ABAP.
"накладные расходы" имеют значение только для ПК, да и концепция использования общей памяти разными процессами означает риски возникновения искажений при нарушениях работы разных процессов.
olegbash написал(а):
есть ли все-таки ссылка, где сама официальная справка abap/net weaver утверждает, что multitasking и multithreading реализован? а также как создать в этой реализации event-loop и future?

Для каких целей нужно точное соответствие определений многозадачности/многопоточности из других языков (судя по терминам - Pyton либо Node.JS) и реализации параллельной обработки в ABAP?
В SAP есть понятие параллельной обработки.
Оно ближе к многозадачности(для каждого потока вычислений выделяется свой процесс с отдельным пулом ресурсов), но управляется из вызывающей программы (как в многопоточности), куда передаются данные после обработки.
Аналогом event-loop служит оператор WAIT UNTIL, который после запуска N параллельных процессов ждет, пока все они завершатся.
В ABAP нет возможности принудительно завершить event-loop, можно только дождаться его окончания. В случае, если, какой-либо процесс уходит в очень долгую обработку, завершить его можно через SM50.

Ну а feature, насколько я понимаю, это дополнение к CALL FUNCTION .. STARTING NEW TASK - PERFORMING .. AT END OF TASK, определяющее, какая процедура/метод будут вызваны после завершения параллельного ФМ (в нем вызывается оператор RECEIVE RESULTS FROM..).

Сценарии использования параллельных вычислений несколько:
1. обогащение данных по частям по одному алгоритму
2. параллельная выборка разных данных (вызов разных алгоритмов)

Сценарий использования ABAP параллельной обработки, в которой потоки должны взаимодействовать друг с другом как-то не приходят в голову из-за ограничения по количеству процессов, запускаемых одновременно из одной программы.

В ABAP я реализовывал много задач с распараллеливанием процессов - от "тяжелых" отчетов по MM, FI, CO, PP до экстракторов в BW.
Время выполнения обработки удалось уменьшать в 3-3,5 раза (при запуске 4 параллельных потоков по сценарию 1), в случае радикально тяжелых задач приходилось масштабировать через запуск фоновых задач, каждая из которых запускает по 4-5 процессов.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Вс, май 14 2023, 10:10 
Модератор
Модератор

Зарегистрирован:
Пн, июн 27 2011, 08:25
Сообщения: 477
Оказывается, есть множество подходов с переносом копий без генерации версии.
https://blogs.sap.com/2023/05/12/hide-t ... hancement/

по крайней мере 3:
1) как у автора из блога - сделать редактирование стандартного кода и enhance
2) как у одного из комментаторов https://blogs.sap.com/2023/05/12/hide-toc-transports-in-abap-version-management-enhancement/#li-comment-672727
Цитата:
you can modify the TMS Parameter VERS_AT_EXP to not create a Version for ToC at all.

но это работает для современных версий
3) :D естественно, самым лучшим и быстрым и "без проблем накатываемым" является решение ZCTS_BROWSER (другого комментатора)
https://blogs.sap.com/2023/05/12/hide-toc-transports-in-abap-version-management-enhancement/#li-comment-672756

а что используется в других системах интересно было бы знать?)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Пн, май 22 2023, 20:33 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 18:21
Сообщения: 1613
Олег, привет :pivo: Ума не приложу зачем тебе в многозадачности передача по ссылке. Что ты с ней будешь делать? (с) :D Все проблемы многозадачности именно от попытки совместного доступа к памяти всегда, и тут чего только не придумали, мутексы-х..., атомарные инструкции на уровне железа. Зачем это все. Если ты просто хочешь не копировать объекты их родительского процесса, так не копируй их. Условно не выбирай там таблицу всю по которой надо работать, раздай параметры запросов в подзадачи и оттуда доставай данные в память уже локально. Да, согласен, что в конце это все надо будет "свести", но хорошая техника это свести уже в БД. Абап - это не про техническое превосходство, а про тупо сделать бизнес задачу наиболее эффективно. И тут он лучше всех остальных языков, потому что все просто "тупо" до безобразия :D

_________________
я твой сап эфай внедрял
BAdI-позитив
Взять немножечко абопу, сунь туда кошачью *опу, RFC лапки, БТ старой бабки, на медленном базиснике переносить, тестовое окружение материть, снимать SAT пенку, биться головой о стенку, охапка тайм-шитов, отчет готов!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Чт, май 25 2023, 19:30 
Модератор
Модератор

Зарегистрирован:
Пн, июн 27 2011, 08:25
Сообщения: 477
Согласен с тобой и даже частично с предыдущими собеседниками, и я понимаю, что существуют обходные пути (подстроить архитектуру решения, или использовать starting new task); однако, это не отменяет справедливости утверждения: ну нет non-blocking task в одном thread в net weaver for abap (про net weaver for java сказать не могу).


а сфера применения проста: асинхронщина помогает в микросервисной архитектуре.
асинхронные задачи по сути представляют неблокирующие задачи и для интеграции это помогает.
конкретно в моем случае (где случился мега-выхлоп): при работе с различными файловыми хранилищами.

если рамки простого сообщения слишком малы для того, чтобы показать свою позицию - то давайте обсудим в видео чате по интеграции.
сам чат: https://t.me/sapintegration
а видео по пятницам в 17:30.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 117 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB