Non è possibile per un thread accedere autonomamente al proprio std::thread
. Questo è di proposito poiché std::thread
è un tipo di spostamento.
Credo che quello che stai richiedendo è un membro native_handle()
di std::thread::id
, e questo è un suggerimento interessante. Per quanto ne so, non è attualmente possibile. Sarebbe stato usato come:
void foo()
{
auto native_me = std::this_thread::get_id().native_handle();
// ...
}
Non sarebbe garantito funzionare o esistere. Tuttavia, immagino che la maggior parte delle piattaforme POSIX possa supportarlo.
Un modo per provare a cambiare lo standard C++ è inviare problemi. Here sono le indicazioni su come farlo.
fonte
2013-04-28 03:33:45
pensi che una cosa del genere vada presentata come una proposta per C++ 14? – pyCthon
@NicholasPezolano: In questo momento no. Tuttavia, potrei essere persuaso da un caso d'uso motivante e da un'implementazione che lo dimostri. Cioè Penso di conoscere il costo/rischio. Ma non penso di conoscere il beneficio. Se il vantaggio è zero, non importa quanto sia basso il costo, il rapporto benefici/costi è scarso. Quindi avresti bisogno di dimostrare un grande vantaggio. –
Non penso che l'OP voglia necessariamente 'std :: thread :: id :: native_handle'. Penso che il punto interessante sia: non dovrebbe l'interfaccia di 'std :: this_thread' imitare quella di' std :: thread'? Tranne, naturalmente, per quei membri che si riferiscono alla gestione della durata del thread, che, come giustamente fai notare, non ha molto senso. Ciò non lascia molto, ma "native_handle" mi sembra costernamente assente. –