реклама на сайте
подробности

 
 
5 страниц V  « < 2 3 4 5 >  
Reply to this topicStart new topic
> Структура функций, В чём преимущество ?
GetSmart
сообщение May 5 2014, 19:22
Сообщение #46


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(AHTOXA @ May 5 2014, 01:48) *
Что касаемо названия "callback". Вызов из пользовательской программы библиотечной функции - это нормальный вызов. Вызов наоборот - из библиотечной функции пользовательской функции - обратный вызов. Всё логичноsm.gif

А что логичного в вводе лишней сущности на 100% аналогичной параметру-функции? Её частный случай - виртуальная/перегруженная функция (объекта). Их все тоже колбэками обзывать?

ИМХО A. Fig Lee указал на ключевой признак - вызов из другого треда.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение May 5 2014, 19:35
Сообщение #47


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(AHTOXA @ May 5 2014, 11:58) *
Если его засинхронизировали, то он синхронный. Если он синхронный, то он совершенно точно не асинхронный. По-моему, это очевидно.

Именно. Что сам по себе он всегда асинхронный. Чтоб был синхронным надо пляски с бубном.
Пляски с бубном прямого отношения к каллбэку не имеют, но имеют к тому что он асинхронный.
Приходится синхронизировать.

А так да, можно все что угодно засинхронизировать.


Цитата(amaora @ May 5 2014, 13:22) *
А это как называется? Или где здесь событие?

Нет никакого каллбэка здесь. Вызов функции через пойнтер есть.
Абстракция есть. Виртуальная функция средствами С, так сказать.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 5 2014, 19:48
Сообщение #48


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(amaora @ May 5 2014, 21:22) *
Если где-то надо вызвать код более высого слоя, то это обратный вызов callback. Самый известный пример, доставка событий. А самая известная реализация в C языках это указатель на функцию.

А если указатель указывает на функцию более низкого уровня, тогда как? И по какому критерию делить на уровни?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 5 2014, 20:24
Сообщение #49


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(GetSmart @ May 6 2014, 01:22) *
А что логичного в вводе лишней сущности на 100% аналогичной параметру-функции? Её частный случай - виртуальная/перегруженная функция (объекта). Их все тоже колбэками обзывать?

Это не просто параметр-функция. Это такой параметр-функция, который вызывается в процессе работы вызываемой функции (той, которой мы передали параметр). Я уже приводил пример простейшего callback-а: параметр compare функции qsort(). Функция qsort() умеет быстро сортировать, но не знает, что она сортирует. Поэтому она вызывает пользовательскую функцию сравнения. Вот это и есть callback в чистом виде.

Цитата(GetSmart @ May 6 2014, 01:22) *
ИМХО A. Fig Lee указал на ключевой признак - вызов из другого треда.

Нет, это совершенно не обязательно.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 5 2014, 20:31
Сообщение #50


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(AHTOXA @ May 5 2014, 23:24) *
Это такой параметр-функция, который вызывается в процессе работы вызываемой функции (той, которой мы передали параметр).

А разве может быть иное?
Go to the top of the page
 
+Quote Post
GetSmart
сообщение May 5 2014, 20:37
Сообщение #51


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(AHTOXA @ May 6 2014, 02:24) *
Это не просто параметр-функция. Это такой параметр-функция, который вызывается в процессе работы вызываемой функции (той, которой мы передали параметр). Я уже приводил пример простейшего callback-а: ...

Неубедительно.
Параметр-функция для того и существует, чтобы его/её вызывать "оттуда". И как раз функция, которая будет вызывать другую функцию через параметр не знает о ней ничего, кроме списка передаваемых ей параметров. Хотя, из другого треда это уже динамически настраеваемый адрес event-а.

Всё-таки где отличия от параметра-функции или это 100% аналог?

Сообщение отредактировал GetSmart - May 5 2014, 21:57


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 5 2014, 21:59
Сообщение #52


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(ViKo @ May 6 2014, 02:31) *
А разве может быть иное?

Да. Функция может не вызывать переданный ей параметр-функцию в процессе своей работыsm.gif
Может просто сохранить в переменной, например. Или возвращать адрес функции-параметра.

Цитата(GetSmart @ May 6 2014, 02:37) *
Неубедительно.

Вы не согласны с тем, что параметр функции qsort() является callback-ом? Так это не я придумал, это общепринято.
То, что вы с A. Fig Lee считаете callback'ом - это асинхронный callback, частный случай callback'а. Вот вам, например, статья про сравнение асинхронных и синхронных callback'ов. Там есть и определения для этих двух вариантов.

Цитата(GetSmart @ May 6 2014, 02:37) *
Всё-таки где отличия от параметра-функции или это 100% аналог?

Вот выше я привёл два примера функции-параметра, не являющихся callback'ами. Но обычно эти понятия синонимы.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение May 5 2014, 22:48
Сообщение #53


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(AHTOXA @ May 5 2014, 16:59) *
Вы не согласны с тем, что параметр функции qsort() является callback-ом? Так это не я придумал, это общепринято.

CC2520 не является Zigbee трансивером, но в мануале она так обзывается.
Если нет факта callbacka, значит это не callback.
qsort, это ни какой ни бэк, это последовательная енумерация.
Без всяких коллов и бэков.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
XVR
сообщение May 6 2014, 07:30
Сообщение #54


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(ViKo @ May 5 2014, 22:00) *
А мне понятнее вариант 'в'. Вызвали callback функцию, и она вернула, то, чего нам не хватало. laughing.gif
callback может ничего не возвращать
Цитата
А синхронизации - не вижу. Для этого есть другие элементы. Семафоры, например.
Одно другому не мешает. И синхронизировать можно через вызов функции callback'а, и сам семафор использовать в качестве callback'а (callback - это не обязательно функция sm.gif )
Go to the top of the page
 
+Quote Post
amaora
сообщение May 7 2014, 05:21
Сообщение #55


Местный
***

Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778



Цитата(ViKo @ May 5 2014, 23:48) *
А если указатель указывает на функцию более низкого уровня, тогда как? И по какому критерию делить на уровни?

Тогда это прямой вызов. По указателю или нет, значения не имеет. Как делить на уровни решает тот кто пишет код. Файловая система например обычно на уровень выше драйвера устройства хранения.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение May 7 2014, 10:53
Сообщение #56


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(A. Fig Lee @ May 6 2014, 04:48) *
Если нет факта callbacka, значит это не callback.

Голосуем. Кто за этот вариант? sm.gif
А то чёткость признаков отсутствует.

Цитата(amaora @ May 7 2014, 11:21) *
Файловая система например обычно на уровень выше драйвера устройства хранения.

Драйвер устройства хранения вызывает функции файловой системы?


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 7 2014, 11:40
Сообщение #57


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(GetSmart @ May 7 2014, 16:53) *
Голосуем. Кто за этот вариант? sm.gif

Да, это стопудово верный вариант. Осталось выяснить, что такое факты callback'а sm.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
GetSmart
сообщение May 7 2014, 13:17
Сообщение #58


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(AHTOXA @ May 7 2014, 17:40) *
Да, это стопудово верный вариант. Осталось выяснить, что такое факты callback'а sm.gif

Как в жизни. "Перезвони(те) мне" = асинхронность + разговор за чужой счёт (чужой тред). Плюс нет 100% гарантии, что перезвонит sm.gif

Сообщение отредактировал GetSmart - May 7 2014, 13:29


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение May 7 2014, 13:30
Сообщение #59


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(GetSmart @ May 7 2014, 05:53) *
Голосуем. Кто за этот вариант? sm.gif

+1.
Кстати по поводу "qsort callback"
Это как "шампанское" "Советское шампанское".
Все называют. Хотя правильное определение шампанского, если спросить:
игристое вино произведенное в провинции Шампань.
А так да, шампанское является игристым вином..



--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение May 7 2014, 13:40
Сообщение #60


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(A. Fig Lee @ May 7 2014, 19:30) *
Все называют. Хотя правильное определение шампанского, если спросить:
игристое вино произведенное в провинции Шампань.

Это уже ниже пояса (про советское). Напиток давно потерял связь с деревней.

Более интересен вопрос: Корневой класс колбэкает виртуальные методы своих потомков или нет? Они ей вроде как сообщают "номера телефонов". Но здесь скорее кол без бэка.

Сообщение отредактировал GetSmart - May 7 2014, 13:46


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post

5 страниц V  « < 2 3 4 5 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 22:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01523 секунд с 7
ELECTRONIX ©2004-2016