Конференция "Сети" » send в блокирующем режиме (после select)
 
  • ATitle (21.02.11 20:51) [0]
    Как свести к минимуму возможность блокировки потока после вызова send? Использую select и WriteFDS, но поток все равно иногда блокируется (и иногда надолго). Можно ли это предотвратить? Может стоит разбивать данные на части, ограничивая передаваемый буфер определенным размером? Если да, то каким размером? Или ничего тут не придумаешь и полное отсутствие блокировок возможно только в неблокирующем режиме?
  • Сергей М. © (22.02.11 19:14) [1]

    > Если да, то каким размером?


    см. GetSockOpt, опция SO_SNDBUF.
  • DiamondShark © (02.03.11 11:08) [2]

    > Сергей М. ©   (22.02.11 19:14) [1]

    Не поможет. Если в буфере будет свободен 1 байт, select покажет доступность для записи, а send с 2-байтовым блоком будет блокирована.


    > ATitle   (21.02.11 20:51) 
    > Можно ли это предотвратить?

    В общем случае -- нет. Да оно и не надо.


    > Если да, то каким размером?

    1 байт.
 
Конференция "Сети" » send в блокирующем режиме (после select)
Есть новые Нет новых   [134436   +26][b:0][p:0]