Powiedz, jeśli mam identyfikator wątku, czy mogę mieć pewność, że będzie on unikatowy (tak długo, jak wątek jest uruchomiony) na proces lub w całym systemie operacyjnym (pośród wszystkich zalogowanych użytkowników)?Czy identyfikatory wątków są unikalne na proces lub na komputer?
Odpowiedz
Tak, identyfikatory wątków i identyfikatory procesów w systemie Windows są przydzielane z tej samej puli, więc będą unikatowe. Jednak po zakończeniu wątku lub procesu identyfikator może zostać ponownie wykorzystany przez inny wątek lub proces.
Tak, dziękuję. Wiem, że PID są wyjątkowe. Nie byłem pewien co do identyfikatorów wątków. – c00000fd
Czy możesz rozwinąć swoją odpowiedź, aby wyjaśnić, jak często odzyskiwanie wątków i identyfikatory procesów są przetwarzane? –
@ ChristopherOezbek Gdy tylko obiekt jądra zostanie zamknięty, jego identyfikator może zostać ponownie użyty. Tak więc jest to całkowicie możliwe: 'hThread1 = CreateThread (... &tid1); CloseHandle (hThread1); hThread2 = CreateThread (... &tid2); // tid1 == tid2, nawet hThread1 == hThread2' Chociaż teraz odnoszą się do innego jądra Obiekt: – parrowdice
Wątek jest reprezentowany przez obiekt jądra, np. na platformie Windows. Dlatego jego id będzie unikalny we wszystkich procesach we wszystkich sesjach logowania. Jednak identyfikatory wątków mogą zostać ponownie przetworzone po zamknięciu obiektu jądra wątku.
GetCurrentThreadId również wyraźnie mówi o unikalnym identyfikatorze podczas działania.
Dzięki. Aby zabezpieczyć się przed odzyskiwaniem identyfikatorów wątków (jeśli wątek i jego uchwyt mogły zostać zamknięte podczas śledzenia tego identyfikatora wątku), można go powiązać z tworzeniem wątku FILETIME, które można uzyskać za pomocą funkcji API GetThreadTimes() – c00000fd
@ user843732 : Zrobione we właściwy sposób, tak, możesz. Korzystam z tej techniki, aby sprawdzić, czy PID nadrzędnego procesu wskazuje na proces nadrzędny w porównaniu z procesem, który poddał recyklingowi PID rodzica. – parrowdice
@parrowdice: Kolejne pytanie, chłopaki. Czas "FILETIME" zwrócony przez GetThreadTimes() API nie ma "jittera" związanego z zegarem, prawda? Dokumenty twierdzą, że wartość tworzenia wątku jest wyrażona w "100-nanosekundach t Ime jednostki "co jest strasznie precyzyjne! To nie spowoduje, że wewnętrzny timer zacznie zaokrąglać go za różne połączenia z tym API, prawda? – c00000fd
- 1. Czy identyfikatory wątków i procesów są unikatowe?
- 2. Unikalne identyfikatory z mongodb
- 3. Unikalne identyfikatory dla iOS MDM
- 4. Smukłe klasy synchronizacji są na AppDomain lub na proces?
- 5. Zwiększ liczbę wątków na proces roboczy IIS
- 6. Programowe widoki Jak ustawić unikalne identyfikatory?
- 7. Uzyskaj unikalne identyfikatory systemu w języku C#
- 8. Zasady Firebase bezpieczeństwa: .indexOn unikalne identyfikatory
- 9. Jakie są praktyczne ograniczenia wątków na procesor?
- 10. Czy są wymagane unikalne ograniczenia dla DB?
- 11. Aplikacje na komputer JavaScript?
- 12. Czas kwantowy na proces na wątek
- 13. iis7 zwiększenie liczby wątków/jednoczesnych żądań na proces roboczy
- 14. Czy stałe statyczne funkcji inline są unikalne?
- 15. Unikalne identyfikatory między użytkownikami i administratorów z opracowują Rails
- 16. Czy istnieje sposób na dodanie wsparcia dla HLS w odtwarzaczu Chrome na komputer lub HTML5?
- 17. Czy metody SmtpClient.SendMailAsync są bezpieczne dla wątków?
- 18. Rozróżnianie różnych znaczników w Maps API v2 (unikalne identyfikatory)
- 19. Czy proces z większą ilością wątków na Linuksie miałby więcej czasu procesora niż proces z jednym wątkiem?
- 20. Czy Linux planuje proces lub wątek?
- 21. Czy single Kotlina są bezpieczne dla wątków?
- 22. Porównując obiektu lub tylko identyfikatory
- 23. Czy mój proces oczekuje na dane wejściowe?
- 24. Wdrażanie aplikacji WPF na komputer w chmurze
- 25. Czy generatory są bezpieczne dla wątków?
- 26. Czy metody statyczne bez wątków są bezpieczne?
- 27. Czy identyfikatory GUID generowane w systemie Windows 2003 są bezpieczne do użycia jako identyfikatory sesji?
- 28. Jak generować oparte na czasie identyfikatory UUID?
- 29. wiele wątków zapisujących na std :: cout lub std :: cerr
- 30. Czy identyfikatory (ObjectId from mongo) są bezpieczne w adresie URL?
Gdy wiesz, że wątek może działać na różnych rdzeniach/procesorach podczas jego trwania i że ID pozostanie niezmieniony w tym czasie, możesz samemu wydedukować odpowiedź ;-) –