Come gestire i thread in un framework

0

Sto sviluppando un framework con C ++ e contiene tre livelli:

  • Funzioni di basso livello che fanno il duro lavoro
  • Un livello superiore che utilizza le funzioni di livello basso per eseguire attività (le funzioni a questo livello in genere utilizzano solo una funzione di livello inferiore e accettano esplicitamente il puntatore della funzione per sapere quale funzione chiamare)
  • Classi di livello superiore che utilizzano queste funzioni di livello intermedio per eseguire attività complete.

Il problema è che sto introducendo la concorrenza nel framework e ho bisogno di un modo per mettere a punto questa concurrency per funzione base. Posso progettare un oggetto per trasferire i parametri di concorrenza, ma non voglio passare un oggetto a funzioni che non sono simultanee.

Le funzioni concorrenti possono essere di qualsiasi livello e la loro concorrenza deve essere controllata in modo indipendente.

Esiste uno schema o un metodo migliore per consentire solo alle funzioni concorrenti di accedere a queste informazioni?

    
posta bayindirh 31.01.2017 - 07:43
fonte

1 risposta

2

Hai provato boost.fiber ? Questo è un framework di thread userspace (una sorta di thread verdi simili)

Non l'ho usato personalmente, ma se capisco bene, il boost delle fibre può fornirti il livello di granularità di cui hai bisogno senza il sovraccarico del passaggio da un thread all'altro.

Quindi puoi forse generare le funzioni simultanee come fibre sotto il thread di proprietà del genitore, isolando le informazioni sulla concorrenza all'interno del / dei thread.

Puoi anche utilizzare diversi tipi di gestione della fibra per diversi set di funzioni. Quindi buona sintonizzazione.

    
risposta data 31.01.2017 - 10:01
fonte

Leggi altre domande sui tag