User Tag List

Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 23 из 23

Тема: Мультиинтерфейсник для разъёма "ПУ" Вектора06Ц

  1. #21

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,299
    Спасибо Благодарностей отдано 
    1,028
    Спасибо Благодарностей получено 
    813
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Класс! Качает как Шадки

    Чтобы на Питоне сделать обмен одним потоком без особых заморочек, можно воспользоваться системным вызовом select(). Он блокирует поток до тех пор, пока не станет доступным ввод-вывод по одному из переданных ему файловых дескрипторов.
    Больше игр нет

  2. #22

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    318
    Поблагодарили
    222 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Мне кажется, что передача данных одним потоком не совсем подходит. Т.к. этот поток всё равно нужно тормозить со стороны Вектора, для защиты от переполнения принимающего буфера.
    У меня сейчас Девайс запрашивает очередной пакет данных, а не сообщает отправляющей стороне о состоянии буфера приёма (пуст/заполнен).

    Про Питон и select() - совсем не понял, т.к. практически его не знаю.

  3. #23

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,299
    Спасибо Благодарностей отдано 
    1,028
    Спасибо Благодарностей получено 
    813
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от KTSerg Посмотреть сообщение
    Про Питон и select() - совсем не понял, т.к. практически его не знаю.
    Это древний но эффективный механизм, который уже много десятилетий позволяет ожидающим ввода-вывода программам не занимать 100% процессора. Суть проста: вместо того, чтобы делать цикл с постоянным опросом "а нет ли чего в буфере?", мы делаем цикл с вызовом select(). select() принимает список файловых дескрипторов, которые нас интересуют, и приостанавливает вызвавший его процесс, пока в буферах обмена этих дескрипторов не появятся данные в случае чтения, или пока не опустошится выходной буфер в случае записи.

    Наверное статья-другая с примерами никогда не помешает:
    https://steelkiwi.com/blog/working-tcp-sockets/
    или
    https://pymotw.com/2/select/

    Я уверен, что и по-русски где-то есть, но мне сходу попались только сразу какие-то слишком навороченные примеры. А прелесть select() в том, что он прост, как схема выключателя.
    Больше игр нет

Страница 3 из 3 ПерваяПервая 123

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 17
    Последнее: 26.12.2015, 23:22
  2. Ответов: 51
    Последнее: 23.03.2015, 10:45
  3. Ответов: 51
    Последнее: 11.08.2014, 10:40
  4. Ответов: 0
    Последнее: 15.08.2010, 14:38

Ваши права

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