Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Начал копаться - повылезало

Нет в жизни счастья. В том коде, что я нахваливал, при ближайшем рассмотрении вылезла лажа. Товарищи, значит, принимают и отправляют UDP-датаграммы. Делают это так:

Заводят в системе захардкоженное количество worker threads (8 шт). Создают в каждом потоке по сокету, и дальше крутятся в некотором подобии select loop. Один сокет обслуживает 1000 "соединений". Пока всё нормально.

Но вот как выглядит этот select loop - это просто пиздец и умереть-не-встать. Линейные поиски, стопятьдесят селектов вместо одного, составные операторы ("{ }", если кто не знает) десятикратной (!) вложенности, совершенное неумение выполнять extract function.

Мало того, что встречаются многостраничные функции с оной десятикратной вложенностью фигурных скобок, так ещё и вместо нескольких функций используют одну, но с флагами:
SetStatus(unsigned long ip, int status){
...
if(status > 0){ //positive response, status contains operation time
...
}
else if(status < 0){ //negative response, status contains -error level
{
...
}


Вот ещё в другом месте:

//outIdErr contains error code if return value is null, or query id otherwise

Если бы это работало - слова бы не сказал.
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments