-
- да я это понимаю, но где здесь "обратность"? - Argon(03.08.2020 14:12)
- В данном случае так и есть. Применяется для укрытия зависимости. Но
механизм такой как в настоящем callback, поэтому так называется.
Callback тесно свазан с поточностью и асинхронным возвращенем
результата. Например, поток 1 вызывает неблокирующую функцию (А) и
как параметр передает указатель на callback (Б). Функция А долго
думает чтото, выполняет и после завершения вызывает функцию (Б) с
результатом. Т.е. Ты (А) сделай что там надо и верни результат. Вот
возвращение framer(27 знак., 03.08.2020 14:34)
- а что такое "настоящий callback"? - Argon(03.08.2020 14:43)
- например framer(3037 знак., 03.08.2020 16:42)
- аж двойной! жуть! - Argon(03.08.2020 16:55)
- например framer(3037 знак., 03.08.2020 16:42)
- а что такое "настоящий callback"? - Argon(03.08.2020 14:43)
- Подразумевается что компонент 1 (main) вызывет компонен 2 (each) и
передаёт ему свою функцию, принадлежащую компоненту 1 (cb_body),
которая потом будет вызвана из each. "Обратность" в этом. - fk0(03.08.2020 14:20)
- п-пастойте-ка, cb_body не принадлежит какому-то компоненту!
Совершенно параллельная функция всем прочим функциям. - Argon(03.08.2020 14:28)
- Подразумевается, что она принадлежит компоненту 1, тому же, который вызывает each.
Потому, что передавать указатель на функцию от чужого компонента --
странная идея. Ибо обычно видны только публичные (интерфейс)
функции чужих компонентов, а не всё подряд. - fk0(03.08.2020 14:48)
- Выше упомянули про потоки... Вот если бы это было сказано про
межпоточное взаимодействие - все было бы гораздо более понятно.
Т.е. из функции main() потока 1 вызывается функция each() потока 2,
при этом снабжается функцией возврата результата. И вот эта функция
возвращает результат в 1й поток из 2-го. Это моя догадка на основе
слов framer-а, но может, так оно и должно объясняться? Argon(77 знак., 03.08.2020 14:54)
- Потоки приплетены совершенно напрасно, только запутывают. Функция
из одного потока никак не вызовет функцию из другого потока -- это
в принципе невозможно. Суть именно в принадлежности изначальной
функции (main) и вызываемой через указатель функции к одному
классу, компоненту, модулю... Достаточно представить, что в
программе нет свободных функций. Все они кому-то принадлежат. - fk0(03.08.2020 15:11)
- спасибо, надо переварить... - Argon(03.08.2020 15:22)
- Ну потоки тоже неудачное объяснение. И пример неудачный. Нужно представить, что функции each, cb_body1 и cb_body2 находятся в отдельном модуле и обслуживают какое-то свое устройство. each выполняется и проверяет работу этого устройства, а в некоторых случаях возвращает управление обратно в модуль. - VLLV(03.08.2020 14:57)
- Потоки приплетены совершенно напрасно, только запутывают. Функция
из одного потока никак не вызовет функцию из другого потока -- это
в принципе невозможно. Суть именно в принадлежности изначальной
функции (main) и вызываемой через указатель функции к одному
классу, компоненту, модулю... Достаточно представить, что в
программе нет свободных функций. Все они кому-то принадлежат. - fk0(03.08.2020 15:11)
- Выше упомянули про потоки... Вот если бы это было сказано про
межпоточное взаимодействие - все было бы гораздо более понятно.
Т.е. из функции main() потока 1 вызывается функция each() потока 2,
при этом снабжается функцией возврата результата. И вот эта функция
возвращает результат в 1й поток из 2-го. Это моя догадка на основе
слов framer-а, но может, так оно и должно объясняться? Argon(77 знак., 03.08.2020 14:54)
- Подразумевается, что она принадлежит компоненту 1, тому же, который вызывает each.
Потому, что передавать указатель на функцию от чужого компонента --
странная идея. Ибо обычно видны только публичные (интерфейс)
функции чужих компонентов, а не всё подряд. - fk0(03.08.2020 14:48)
- п-пастойте-ка, cb_body не принадлежит какому-то компоненту!
Совершенно параллельная функция всем прочим функциям. - Argon(03.08.2020 14:28)
- В данном случае так и есть. Применяется для укрытия зависимости. Но
механизм такой как в настоящем callback, поэтому так называется.
Callback тесно свазан с поточностью и асинхронным возвращенем
результата. Например, поток 1 вызывает неблокирующую функцию (А) и
как параметр передает указатель на callback (Б). Функция А долго
думает чтото, выполняет и после завершения вызывает функцию (Б) с
результатом. Т.е. Ты (А) сделай что там надо и верни результат. Вот
возвращение framer(27 знак., 03.08.2020 14:34)
- да я это понимаю, но где здесь "обратность"? - Argon(03.08.2020 14:12)