TerminateThread na wątku w którym oczekujemy na wywołanie funkcji WinAPI

0

czasami funkcja GetBusType służaca do pobierania informacji o woluminie może zwisnąć na długie minuty - przykład, zamapowany dysk sieciowy którego teraz brak. Czy moge ubić taki wątek ThreadTerminate? Teoretycznie to nie w moim kodzie dochodzi do wstrzymania, ale co sie stanie gdy np. moje wywołanie ThreadTerminate odbędzie sie już poza funkcją GetBusType a w dalszym etapie synchronizacji z głównym wątkiem?

0

Generalnie nigdy nie powinno się ubijać wątków - poza aktualnym - niezależnie od pobudek.
„długie minuty” prędzej czy później przeminą, więc raczej zaprojektuj program tak, by nie blokowała go chwilowa zwiecha wątka, jeśli jesteś pewien, że tej zwiesze nie można zapobiec.

0

W WinApi nie ma takiej funkcji jak GetBusType tylko prawdopodonie znalazłeś lub napisałeś funkcję która to robi za pomocą CreateFile i DeviceIoControl. Jeżeli tak jest to wątek prawdopodobnie "wisi" DeviceIoControl a przecież w funkcji tej można ustawić TimeOut i po sprawie.
.
EDIT. A nie bo IOCTL_SET_TIMEOUT jest chyba tylko dla USB

0

kAzek masz racje ;)

wisi na CreateFile

0

czyli tu nie ma timeoutu :(

0

Pokaż kod.

1 użytkowników online, w tym zalogowanych: 0, gości: 1