Wątki w WinXp/2000 i Win Me/9x

0

Napisalem z C program, ktory korzysta z watkow - jeden watek, standardowa funkcja obslugi watku itd.

Problem w tym, ze taki program skompilowany pod WinXP dziala tylko pod WinXP/2000. Jezeli program jest uruchomiony pod WinMe/9x, watek w ogole nie startuje :|

Dlaczego? Czy naprawde jest konieczna rekompilacja pod Win98, zeby to dzialalo?

0

Potrzeba rekompilacji wydaje mi się dziwnie niewłaściwa. Opisz coś więcej, głównie jak tworzysz wątek i ewentualnie się z nim komunikujesz.

0

Wiele funkcji lub opcji inaczej działa na starszych wersjach lub wcale, zwłaszcza przy zarządzaniu wątkami. Przejrzyj MSDN opis funkjic, których urzywasz w programie.

0

Opisz coś więcej, głównie jak tworzysz wątek i ewentualnie się z nim komunikujesz.

Hmm musze napisac z pamieci...ale standardowo to jest tak:

  • tworzenie: CreateThread
  • obsluga: ThreadFunc
  • ustawienie priorytetu: SetThreadPriority
  • start watku: ResumeThread

Poniewaz jest to tylko jeden watek, wiec sprawa raczej prosta: utworzyc watek (tworze zatrzymany), potem ustawic priorytet, no i uruchomic go funkcja ResumeThread. Zatrzymanie funkcja SuspendThread i zabicie funckja CloseHandle.
Ale nie chodzi nawet o zamykanie, bo watek po prostu nie startuje pod Win98.

Czytalem MSDN, ale wyglada na to ze w tej kwestii nic sie nie zmienilo od czasow Win95, tym bardziej dziwie sie czemu to nie dziala.

Moze to przez kompilator, ktorego uzywam ? (LCC). Ale to wydaje sie malo prawdopodobne.

0

Czytalem MSDN, ale wyglada na to ze w tej kwestii nic sie nie zmienilo od czasow Win95, tym bardziej dziwie sie czemu to nie dziala.

Czyżby???

lpThreadId

Pointer to a 32-bit variable that receives the thread identifier.

Windows NT: If this parameter is NULL, the thread identifier is not returned.

Windows 95 and Windows 98: This parameter may not be NULL.

0

No ok, jezeli nawet to mi ID niepotrzebny - zreszta wstawiam tam zmienna a nie NULL. Wykorzystuje jednak tylko Handle watku, zeby uruchomic go za pomoca ResumeThread.

Wiec dalej nie wiem, co zrobic zeby i pod Win98 dzialalo?

[edit]
Ok..........dobralem sie do tego kodu no i rzeczywiscie, jako lpThreadId mam wstawione 0. Teraz nie mam mozliwosci tego sprawdzic, ale byc moze to rzeczywiscie przez to nie dziala.

Jak nic nie pomoze, to napisze tu o tym, tymczasem thx za odpowiedzi.

0

Wiesz, bez kawałka kodu to można sobie zgadywać co jest przyczyną. U mnie nie ma tego typu problemów z wątkami ;) Druga sprawa. Zlokalizowałeś miesce, w którym się sypie???

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