Dzieńdoberek :D
Mam sobie baaardzo duży kodzik który chciałbym umieścić w wątku ... niestety, kod ów odwołuje się w bardzo wielu miejscach do bardzo wielu obiektów "zewnętrznych" (VCL znaczy się :P) więc nie wyobrażam sobie pisania dziesiątek procedur dla Synchronize i tworzenia setek zmiennych globalnych w wątku aby w jakiś sposób przekazać parametry do metod synchronize ... Zastanawiam się czy ma sens wrzucenie całej, ogromnej i długo działającej procki do synchronize ? czy nie zadziała to wtedy tak jakby wątku nie było?
Czy jest w ogóle jakiś inny, lepszy sposób na to? [???]
Pozdrawiam :)
tak - przeanalizować kod i do wątku wrzucić tylko to co potrzeba
Misiekd napisał(a)
tak - przeanalizować kod i do wątku wrzucić tylko to co potrzeba
Pytam się o konkretne porady [glowa]
Połowe problemów z tego forum możnaby "załatwić" odpowiadając "przeanalizuj kod" [glowa]
Specyfika zadania które wykonuje ten kod jest taka, że bez dostępu do danych głównego wątku jest niemożliwa (fizycznie odwołania następuja dosyć rzadko, ale w kodzie jest ich cała masa :/ )
h4x10r_again napisał(a)
Pytam się o konkretne porady [glowa]
a cóż ci mam napisać na tak postawione pytanie innego??? Ani kawałka kodu i oczekujesz, że się domyślę co ty tam robisz?
synchronize wykonuje się w kontekście głównego wątku, więc umieszczenie tam całości kodu drugiego wątku spowoduje, że równie dobrze mógłbyś go nie tworzyć.
nie musisz wywoływać kodu odwołującego się do kontrolek w synchronize, w zasadzie wystarczy, że wsadzisz go do sekcji krytycznej albo muteksa.
ŁF napisał(a)
synchronize wykonuje się w kontekście głównego wątku, więc umieszczenie tam całości kodu drugiego wątku spowoduje, że równie dobrze mógłbyś go nie tworzyć.
nie musisz wywoływać kodu odwołującego się do kontrolek w synchronize, w zasadzie wystarczy, że wsadzisz go do sekcji krytycznej albo muteksa.
Hmm a mógłbyś podać jakieś bliższe informacje na ten temat? Szukanie "mutex + TThread" lub "critical section + tthread" nie bardzo mi rozjaśniło sprawę ... :(
Próbowałem zrobić tak, żeby wątek dopiero przy synchronize "wymieniał się danymi" z głownym wątkiem, to niestety odpada, ponieważ wątek modyfikuje już istniejące dane (a nie tworzy nowe) - nie mogę używać assign ponieważ korzystam z dziedziczenia i nigdy nie wiem jakiej klasy instancja zostanie przekazana do wątku / procedury :(
Może zacznijmy od tego: A za cojest odpowiedzialny kod który chcesz umieścić w wątku i dlaczego chcesz to zrobić ? Często spotyka sie na forum problemy odnośnie wątków, kiedy tak anprawde zastosowanie wątku jest mylnym wyborem.