Es gibt keine Möglichkeit, dass ein Thread autonom Zugriff auf seine eigene std::thread
erhält. Dies ist absichtlich, da std::thread
ein Nur-Bewegung-Typ ist.
Ich glaube, was Sie anfordern, ist ein native_handle()
Mitglied von std::thread::id
, und das ist ein interessanter Vorschlag. Soweit ich weiß, ist dies derzeit nicht möglich. Es würde verwendet werden wie:
void foo()
{
auto native_me = std::this_thread::get_id().native_handle();
// ...
}
Es wäre nicht garantiert zu arbeiten, oder sogar existieren. Ich kann mir jedoch vorstellen, dass die meisten POSIX-Plattformen dies unterstützen könnten.
Eine Möglichkeit, den C++ - Standard zu ändern, besteht darin, Probleme zu übermitteln. Here sind Anweisungen dazu.
Denkst du, dass sich so etwas als Vorschlag für C++ 14 eignet? – pyCthon
@NicholasPezolano: Zu dieser Zeit keine. Ich konnte jedoch durch einen motivierenden Anwendungsfall und eine Implementierung davon überzeugt werden. I.e. Ich denke, ich kenne das Risiko. Aber ich glaube nicht, dass ich den Nutzen kenne. Wenn der Nutzen gleich null ist, ist das Nutzen-Kosten-Verhältnis, egal wie niedrig die Kosten sind, gering. Sie müssten also einen großen Vorteil demonstrieren. –
Ich glaube nicht, dass das OP unbedingt 'std :: thread :: id :: native_handle' will. Ich denke, der interessante Punkt ist: sollte nicht die Schnittstelle von 'std :: this_thread 'die von' std :: thread' nachahmen? Außer natürlich für die Mitglieder, die sich auf das Thread-Lifetime-Management beziehen, was, wie Sie zu Recht betonen, nicht zu viel Sinn ergibt. Das lässt nicht viel übrig, aber 'native_handle' erscheint mir als auffallend abwesend. –