Vit (27.04.2009 01:10, просмотров: 343) ответил 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 пока ничего полезного ещё не принялось.