То же, вроде, с интернет протоколами. Они примитивны до предела. Использовать их без оснастки нельзя. Но работает, а оснащение можно придумать заново. Например, очередь может иметь сложное устройство или простое, какова цель.
Разбирался с POP3 и SMTP. Они примитивны. Там, конечно, можно получить ответ об отказе пересылки, а вот защит нет никаких вообще, что обескураживает. Защиты - надстройки над этими протоколами. И все-равно никто не мешает через них слать любой мусор.
А, если подумать, то ведь работает. Это же всего-то - линия связи. Дисциплина и правила - общественный договор.
Какой мудило сделал там вообще защёлку? Ладно, не хочешь делать очередь - ну так сделай функцию "отправить данные", которая возвращает удачу при возможности отправить или блокирует поток до тех пор, пока не будет возможность отправить. Поскольку потоков конечное количество - то все будут обслужены.
А вот с чтением тут засада: Допустим, в адаптере есть данные для первого потока (ответ на запрос первого потока). Откуда драйвер знает, какому из потоков отдать этот ответ?
Что-то у меня ощущение, что Bluetooth предполагает общение строго одного потока с одним устройством, и никак иначе.
> сделай функцию "отправить данные", которая возвращает удачу при возможности отправить или блокирует поток до тех пор, пока не будет возможность отправить. Так для этого защелка/синхронизатор и нужна.
>Допустим, в адаптере есть данные для первого потока (ответ на запрос первого потока). Откуда драйвер знает, какому из потоков отдать этот ответ? Там немножко не так. Все вызовы синхронные, поэтому с принадлежностью чтения-записи нету. Когда идет подписка на уведомления - сохраняется какие уведомления куда коллбэчить.
>ощущение, что Bluetooth предполагает общение строго одного потока с одним устройством Нет, это BLE, он многоточечный и асинхронный.
Comments 12
Reply
Reply
Reply
Reply
Reply
UDP и ICMP - простые.
TCP - сложный.
Telnet - простой.
HTTP, SMTP - сложные.
Reply
А, если подумать, то ведь работает. Это же всего-то - линия связи. Дисциплина и правила - общественный договор.
Reply
Reply
А вот с чтением тут засада:
Допустим, в адаптере есть данные для первого потока (ответ на запрос первого потока). Откуда драйвер знает, какому из потоков отдать этот ответ?
Что-то у меня ощущение, что Bluetooth предполагает общение строго одного потока с одним устройством, и никак иначе.
Reply
Так для этого защелка/синхронизатор и нужна.
>Допустим, в адаптере есть данные для первого потока (ответ на запрос первого потока). Откуда драйвер знает, какому из потоков отдать этот ответ?
Там немножко не так. Все вызовы синхронные, поэтому с принадлежностью чтения-записи нету. Когда идет подписка на уведомления - сохраняется какие уведомления куда коллбэчить.
>ощущение, что Bluetooth предполагает общение строго одного потока с одним устройством
Нет, это BLE, он многоточечный и асинхронный.
Reply
Leave a comment