Ho letto in più punti che Boost.Signals non è thread-safe ma non ho trovato molti più dettagli a riguardo. Questa semplice citazione non dice molto. La maggior parte delle applicazioni al giorno d'oggi ha dei thread - anche se provano a essere a thread singolo, alcune delle loro librerie possono usare i thread (per esempio libsdl).Boost: cosa non è protetto da thread in Boost.Signals?
Suppongo che l'implementazione non abbia problemi con altri thread che non accedono allo slot. Quindi è almeno a prova di sicurezza in questo senso.
Ma cosa funziona esattamente e cosa non funzionerebbe? Funzionerebbe per usarlo da più thread purché non lo acceda mai nello stesso momento? Cioè se costruisco i miei mutex attorno allo slot?
Oppure sono obbligato a utilizzare lo slot solo in quel thread in cui l'ho creato? O dove l'ho usato per la prima volta?
È passato un po 'di tempo ... la mia risposta a questo ha senso? Fondamentalmente la libreria di segnali * stessa * non si arresterà in modo anomalo a prescindere dalle chiamate effettuate da qualsiasi thread purché siano "valide" ... ma tu sei responsabile della semantica nel tuo codice. – HostileFork
Sì, ha senso, ma in realtà non risponde a tutte le mie domande. :) Fondamentalmente hai detto "cerca nella fonte". Lo farò in un secondo momento e poi pubblicherò tutte le risposte esatte alle mie domande qui. – Albert
Hai chiesto "cosa funziona esattamente e cosa non funzionerebbe?" Sentivo che era più essenziale che analizzare le tue domande specifiche più ristrette.(Le risposte sono "Sì: se proteggi con un mutex va bene, ma probabilmente non è necessario se la semantica dei tuoi slot è tale che più di un thread può eseguirli alla volta, è come chiamare qualsiasi altra funzione da più thread" e "No: non sei limitato a utilizzare gli slot solo nei thread in cui sono creati.") – HostileFork