 Vit (27.04.2009 01:10, просмотров: 394) ответил Evgeny_CD на Вау, какие люди нас посетили! Уважуха! Как топик стартер, я, похоже, мутно выразился и все свалил в кучу. Отсюда и непонятки. На самом деле есть некий глобальный баланс между "нативной" потребностью проги в памяти и накладных расходах ОСи на
 Vit (27.04.2009 01:10, просмотров: 394) ответил Evgeny_CD на Вау, какие люди нас посетили! Уважуха! Как топик стартер, я, похоже, мутно выразился и все свалил в кучу. Отсюда и непонятки. На самом деле есть некий глобальный баланс между "нативной" потребностью проги в памяти и накладных расходах ОСи на
Хм... там выше Александр абсолютно точно сказал, что POSIX это API, а не сама ОС. Я использую в рамках статических сопрограмм похожие на такие конструкции:
void main(void){
  char * request = NULL;
  clock_t ts;
  while(1){
    if(request){ //echo
      serial_tx_post(request);
      while(!serial_tx_end()){
        ts = clock();
        blink_green();
        while(clock_elapsed(ts) < PAUSE_GREEN);
      }
      request = NULL;
    }
    ts = clock();
    blink_red();
    while(clock_elapsed(ts) < PAUSE_RED){
      if(request = serial_rx_decode()) break; 
    }
  }
}
 
где serial_tx_post(char *) заправляет указатель на строку дрову передачи, serial_tx_end() рассказывает, ушла ли строка, clock() отдаёт значение длинного счетчика (например 32-бит системного таймера с тиком 1 ms), clock_elapsed(ts) возвращает сколько тиков таймера прошло от ts, ну а serial_rx_decode() нужно было бы назвать gets от POSIX ;) - она возвращает NULL пока ничего полезного ещё не принялось.