|
|
  |
Структура функций, В чём преимущество ? |
|
|
|
May 5 2014, 19:35
|

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

|
Цитата(AHTOXA @ May 5 2014, 11:58)  Если его засинхронизировали, то он синхронный. Если он синхронный, то он совершенно точно не асинхронный. По-моему, это очевидно. Именно. Что сам по себе он всегда асинхронный. Чтоб был синхронным надо пляски с бубном. Пляски с бубном прямого отношения к каллбэку не имеют, но имеют к тому что он асинхронный. Приходится синхронизировать. А так да, можно все что угодно засинхронизировать. Цитата(amaora @ May 5 2014, 13:22)  А это как называется? Или где здесь событие? Нет никакого каллбэка здесь. Вызов функции через пойнтер есть. Абстракция есть. Виртуальная функция средствами С, так сказать.
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
May 5 2014, 20:24
|

фанат дивана
     
Группа: Свой
Сообщений: 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 указал на ключевой признак - вызов из другого треда. Нет, это совершенно не обязательно.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
May 5 2014, 20:37
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(AHTOXA @ May 6 2014, 02:24)  Это не просто параметр-функция. Это такой параметр-функция, который вызывается в процессе работы вызываемой функции (той, которой мы передали параметр). Я уже приводил пример простейшего callback-а: ... Неубедительно. Параметр-функция для того и существует, чтобы его/её вызывать "оттуда". И как раз функция, которая будет вызывать другую функцию через параметр не знает о ней ничего, кроме списка передаваемых ей параметров. Хотя, из другого треда это уже динамически настраеваемый адрес event-а. Всё-таки где отличия от параметра-функции или это 100% аналог?
Сообщение отредактировал GetSmart - May 5 2014, 21:57
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
May 5 2014, 21:59
|

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

|
Цитата(ViKo @ May 6 2014, 02:31)  А разве может быть иное? Да. Функция может не вызывать переданный ей параметр-функцию в процессе своей работы  Может просто сохранить в переменной, например. Или возвращать адрес функции-параметра. Цитата(GetSmart @ May 6 2014, 02:37)  Неубедительно. Вы не согласны с тем, что параметр функции qsort() является callback-ом? Так это не я придумал, это общепринято. То, что вы с A. Fig Lee считаете callback'ом - это асинхронный callback, частный случай callback'а. Вот вам, например, статья про сравнение асинхронных и синхронных callback'ов. Там есть и определения для этих двух вариантов. Цитата(GetSmart @ May 6 2014, 02:37)  Всё-таки где отличия от параметра-функции или это 100% аналог? Вот выше я привёл два примера функции-параметра, не являющихся callback'ами. Но обычно эти понятия синонимы.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
May 5 2014, 22:48
|

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

|
Цитата(AHTOXA @ May 5 2014, 16:59)  Вы не согласны с тем, что параметр функции qsort() является callback-ом? Так это не я придумал, это общепринято. CC2520 не является Zigbee трансивером, но в мануале она так обзывается. Если нет факта callbacka, значит это не callback. qsort, это ни какой ни бэк, это последовательная енумерация. Без всяких коллов и бэков.
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
May 6 2014, 07:30
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(ViKo @ May 5 2014, 22:00)  А мне понятнее вариант 'в'. Вызвали callback функцию, и она вернула, то, чего нам не хватало.  callback может ничего не возвращать Цитата А синхронизации - не вижу. Для этого есть другие элементы. Семафоры, например. Одно другому не мешает. И синхронизировать можно через вызов функции callback'а, и сам семафор использовать в качестве callback'а (callback - это не обязательно функция  )
|
|
|
|
|
May 7 2014, 05:21
|
Местный
  
Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778

|
Цитата(ViKo @ May 5 2014, 23:48)  А если указатель указывает на функцию более низкого уровня, тогда как? И по какому критерию делить на уровни? Тогда это прямой вызов. По указателю или нет, значения не имеет. Как делить на уровни решает тот кто пишет код. Файловая система например обычно на уровень выше драйвера устройства хранения.
|
|
|
|
|
May 7 2014, 10:53
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(A. Fig Lee @ May 6 2014, 04:48)  Если нет факта callbacka, значит это не callback. Голосуем. Кто за этот вариант?  А то чёткость признаков отсутствует. Цитата(amaora @ May 7 2014, 11:21)  Файловая система например обычно на уровень выше драйвера устройства хранения. Драйвер устройства хранения вызывает функции файловой системы?
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
May 7 2014, 13:30
|

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

|
Цитата(GetSmart @ May 7 2014, 05:53)  Голосуем. Кто за этот вариант?  +1. Кстати по поводу "qsort callback" Это как "шампанское" "Советское шампанское". Все называют. Хотя правильное определение шампанского, если спросить: игристое вино произведенное в провинции Шампань. А так да, шампанское является игристым вином..
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|