Angenommen, ich habe eine Thread-ID. Kann ich sicher sein, dass sie pro Prozess oder im gesamten Betriebssystem (unter allen angemeldeten Benutzern) eindeutig ist (solange der Thread läuft)?Sind Thread-IDs pro Prozess oder pro Computer eindeutig?
Antwort
Ja, Thread-IDs und Prozess-IDs unter Windows werden aus demselben Pool zugewiesen, sodass sie eindeutig sind. Sobald der Thread oder Prozess jedoch endet, kann die ID von einem anderen Thread oder Prozess wiederverwendet werden.
Ja, danke. Ich weiß, dass PIDs einzigartig sind. Ich war mir nicht sicher über Thread-IDs. – c00000fd
Können Sie Ihre Antwort erweitern, um zu erklären, wie oft Thread-IDs oder Prozess-IDs recycelt werden? –
@ChristopherOezbek Sobald das Kernel-Objekt geschlossen ist, kann seine ID wiederverwendet werden. So ist folgendes möglich: 'hThread1 = CreateThread (... &tid1); CloseHandle (hThread1); hThread2 = CreateThread (... &tid2); // tid1 == tid2, auch hThread1 == hThread2' Obwohl sie sich jetzt auf einen anderen Kernel beziehen Objekt – parrowdice
Ein Thread wird durch ein Kernel-Objekt, z.B. auf Windows-Plattform. Daher wird die ID für alle Prozesse in allen Anmeldesitzungen eindeutig sein. Thread-IDs können jedoch wiederverwendet werden, nachdem das Thread-Kernel-Objekt geschlossen wurde.
GetCurrentThreadId sagt auch eindeutig über die eindeutige ID während des Betriebs.
Thanks.Um Schutz vor Thread-ID-Recycling (wenn Thread & sein Handle geschlossen werden konnte während der Verfolgung dieser Thread-ID ist getan) kann man es mit Thread-Erstellung FILETIME, die mit GetThreadTimes() API erhalten werden konnte. – c00000fd
@ user843732 Auf die richtige Weise getan, ja, das kann ich. Ich benutze diese Technik, um zu überprüfen, ob die Eltern-PID eines Prozesses dessen Eltern-Prozess anzeigt, im Gegensatz zu einem Prozess, der seine PID recycelt hat. – parrowdice
@parrowdice: Eine Folgefrage, Leute Das von der GetThreadTimes() - API zurückgegebene "FILETIME" -Timing hat keinen timerbezogenen "Jitter", oder? Die Dokumente behaupten, dass der Wert der Thread-Erzeugung in "100 Nanosekunden t" ausgedrückt wird Ime Einheiten "das ist schrecklich präzise! Es wird nicht dazu führen, dass der interne Timer für verschiedene Aufrufe dieser API aufruft. – c00000fd
- 1. Gibt es einen verwalteten Heap pro CLR oder pro Prozess?
- 2. Zeitquantum pro Prozess pro Thread
- 3. Ist SSL pro Computer oder pro Verbindungsbasis festgelegt?
- 4. Wie viele Synchronisationsobjekte können pro Prozess und pro Computer in Windows verwendet werden?
- 5. Microservices: Datenquelle pro Instanz oder pro Microservice?
- 6. Quellcode-Repository - pro Client oder pro Anwendung?
- 7. Eine NSOperationQueue pro Zelle oder pro UIViewController?
- 8. eine Instanz der App pro Computer, wie?
- 9. Maximale Laufzeit von Google Skript pro Benutzer oder pro Konto
- 10. Einen Computer eindeutig identifizieren
- 11. Tracking CPU und Speicherverbrauch pro Prozess
- 12. Ist ServletContext eins pro Web-App oder eins pro JVM?
- 13. Ein DAO pro "Container" -Klasse oder ein DAO pro Tabelle?
- 14. Ändern der Codierung pro Datei oder pro Erweiterung
- 15. CPU-Auslastung pro Prozess in Win32 API
- 16. pro Prozess konfigurierbar Core-Dump-Verzeichnis
- 17. iptables-Regel pro Prozess/Dienst erstellen
- 18. CPU-Auslastung pro Prozess in Python
- 19. OS X Java maximale Threads pro Prozess
- 20. Ein Repository pro Tabelle oder ein pro Funktionsabschnitt?
- 21. Twitter API Anruflimit - pro Token oder pro IP?
- 22. Ist die neue System.Runtime.Caching.MemoryCache-Klasse pro Sitzung oder pro Anwendung?
- 23. Git Zweig Namen Strategie - pro Modul oder pro Entwickler?
- 24. SVN Projekt (e) Organisation: pro Modul oder pro Projekt
- 25. Elasticsearch: Pro Shard pro Knoten VS Mehrere Shards pro Knoten?
- 26. Android pro Entwickler Variablen
- 27. Wie kann ich nach einem laufenden Prozess pro Benutzersitzung suchen?
- 28. Formulareingabe - Beschränkung auf eine Einsendung pro IP/Computer
- 29. lesen Dokumente pro Benutzer pro Tag
- 30. laufene Gesamt pro Konto pro Monat
Sobald Sie wissen, dass ein Thread während seiner Laufzeit auf verschiedenen Kernen/Prozessoren laufen kann und die ID während dieser Zeit konstant bleibt, können Sie die Antwort selbst ableiten ;-) –