Sto provando a cambiare il mio cervello dalla programmazione iOS Node.js / Objective-C alla programmazione C ++, ed è un po 'oneroso. Node.js e Objective-C con iOS non hanno un ciclo di esecuzione che dovrei gestire. Quindi, per favore, aiuta anche a piegare la mia mente ai diversi concetti.
Sto creando un programma EAGI per Asterisk ( link ) che riceve i comandi da Asterisco STDIN, invia comandi indietro con STDOUT, e allo stesso tempo riceve dati audio PCM grezzi su FD 3 (STDERR + 1).
Inizialmente, il programma scarterà tutti i dati ricevuti da FD 3, finché non sarà pronto per la registrazione. Quando è pronto per ricevere l'audio non elaborato, inizierà a ricevere i dati ricevuti su FD 3, a codificarlo e a inviarlo su un socket di dati.
In Node.js potremmo semplicemente reindirizzare tutti i dati da fd 3 a qualcosa e ciò accadrebbe "in modo asincrono" e non interferirebbe con l'elaborazione dei dati STDIN allo stesso tempo.
Quando ci si sposta in C ++, qual è il metodo che dovrei usare per leggere da FD 3 mentre si è in grado di elaborare STDIN e questo è tutto fatto nel ciclo di esecuzione principale? E il codice IO non bloccante causerà il picco del processore del sistema per tutta la durata del runtime del programma, e dovrei provare a utilizzare thread invece di?