Non penso che il titolo descriva esattamente la situazione. Mi scuso per la cattiva descrizione.
Sto provando a scrivere un sistema software, in C ++, che avrà un lavoro pesante (scansione del file system per un particolare file o per infezioni, o semplicemente copia / spostamento di un file da un posto a un altro). Questo sistema ha un componente interattivo che offre all'utente la possibilità di sospendere e riprendere l'operazione. Dato che abbiamo un'interfaccia utente, per ottenere una separazione delle preoccupazioni, sto pianificando di eseguire il lavoro su un thread di esecuzione separato (all'interno dello stesso processo) o un processo diverso (se l'interfaccia e l'operazione devono essere separate dal processo confini). Non voglio che la logica di gestione delle richieste dell'interfaccia utente si insinui nel gestore del lavoro. Ora, come dovrei progettare il sistema? Quali primitive (sincronizzazione) dovrei usare qui?
Sono nuovo alla programmazione asincrona. Capisco che, le strutture dati da mantenere (avanzamento, elemento corrente in corso, verifica dell'integrità durante la ripresa, parte del lavoro che è stato completato ancora) dipenderanno esclusivamente dall'applicazione. Tuttavia, esiste un modo generale per affrontare questo problema? Sto cercando un approccio indipendente dalla piattaforma.
Presumo che questo sia discutibile e potrebbe non esserci una risposta corretta, ma qualsiasi suggerimento sarebbe d'aiuto.