Le funzioni di gruppi dello spazio dei nomi this_thread
che accedono al thread corrente, quindi quando è necessario eseguire qualcosa sul thread corrente, non è necessario accedere all'oggetto thread
del thread.
La classe thread non fornisce l'accesso per la resa e la sospensione, queste funzioni hanno solo senso per il thread corrente e possono quindi essere trovate nello spazio dei nomi this_thread
.
Se desideriamo informazioni su un thread diverso, abbiamo bisogno dell'istanza thread
di quel thread, se abbiamo bisogno di accedere al thread corrente, possiamo sempre farlo attraverso le funzioni nello spazio dei nomi this_thread
.
I pensieri per l'utilizzo di uno spazio dei nomi this_thread
è stato spiegato anche nel progetto del prolungamento:
this_thread Namespace
Si noti l'uso del namespace this_thread per disambiguare quando si richiede il id per il thread corrente, vs id di un thread figlio. Il nome get_id per questa azione rimane lo stesso nell'interesse di ridurre l'impronta concettuale dell'interfaccia. Questo progetto vale anche per la funzione cancellation_requested:
std::thread my_child_thread(f);
typedef std::thread::id ID:
ID my_id std::this_thread::get_id(); // The current thread's id
ID your_id my_child_thread.get_id(); // The child thread's id
bool have_i_been_canceled = std::this_thread::cancellation_requested(); // Current thread's cancellation status
bool have_you_been_canceled = my_child_thread.cancellation_requested(); // Child thread's cancellation status
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2320.html
aggiungendo le funzioni dallo spazio dei nomi this_thread
come membri statici della classe thread
si sarebbe potuto fare, ma poi la funzione get_id
avrebbe dovuto essere chiamato qualcos'altro, per renderlo chiaramente distinto dalla già esistente funzione get_id
della classe thread. In altre parole, la mia ipotesi è che il team di C++ abbia deciso di aggiungere le funzioni a uno spazio dei nomi separato per rendere più chiaro che queste funzioni stavano leggendo o manipolando il thread corrente, qualcosa che non sarebbe stato altrettanto chiaro se fossero stati semplicemente aggiunti come statici membri della classe thread.
fonte
2015-11-22 10:26:34
Se solo ci fosse documentazione per questi da qualche parte ... – juanchopanza
Quindi suppongo che abbiate già letto la [documentazione di riferimento] (http://en.cppreference.com/w/cpp/thread) dovreste vedere che è fondamentalmente diverso da la funzionalità di 'std :: thread'. Potresti essere più specifico, cosa per te non è chiaro per te. –