Важная информация

User Tag List

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

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

  1. #21
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    2,888
    Спасибо Благодарностей отдано 
    83
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    30 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

  2. #22
    Master
    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    791
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    27
    Поблагодарили
    16 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

  3. #23
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    2,888
    Спасибо Благодарностей отдано 
    83
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    30 сообщений
    Mentioned
    2 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

Ваши права

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