(Non sono sicuro di capire cosa vuoi, sto cercando di indovinare: IO asincrono potrebbe significare aio (7) ma non parlerai di thread per eseguirli, tuttavia suppongo che tu sia su Linux - adattare la mia risposta ad altri sistemi operativi
Potresti considerare l'utilizzo di variabili di condizione utilizzando std::condition_variable con std :: mutex (probabilmente qualche altro thread segnalerebbe la variabile di condizione, ad esempio quando si aggiunge alla coda). Se non hai familiarità con i concetti, vedi questo tutorial di pthread (quindi adatta le idee a C ++ 11 discussioni ).
Su sistemi POSIX come Linux, puoi verificare che un set di descrittori di file sia leggibile o scrivibile usando sondaggio (2) , ecc. in alcuni ciclo degli eventi ; vedi anche questo ; e puoi attentamente usare SIGIO
(vedi signal (7) e signal-safety (7) prima ...; attenzione che puoi solo richiamare funzioni di sicurezza del segnale asincrono dai gestori di segnali - che esclude la maggior parte delle librerie standard C ++ o C; in pratica puoi tranquillamente impostare alcuni% di% di bandiera al suo interno e testarli bandiere altrove, ad esempio nel ciclo degli eventi). E potresti anche impostare alcuni pipe (7) per auto-in fase di inizializzazione del programma, e scrivi (2) ad esso da un gestore di segnale (a proposito, questo trucco è raccomandato da Qt, in Chiamare le funzioni Qt dai gestori di segnale Unix ), o all'interno di una sezione critica mutex.
PS. Non confondere i segnali Unix con segnalando o trasmettendo una variabile di condizione (che non puoi fare in modo affidabile da dentro un Unix signal (7) gestore).