Wielowątkowość w RGSS
Aktualny czas: 28-04-26, 16:25 Witaj! Przejdź do zakładki Logowanie lub Rejestracja


Wątek zamknięty 
[XP] Wielowątkowość w RGSS
dawidpieper Offline
*


Liczba postów: 38
Dołączył: 25-05-13

Pomógł: 5



Post: #1
Wielowątkowość w RGSS

Witam!
Ostatnio zastanawiałem się nad problemem z Graphics.update i przypomniał mi się dawny pomysł, bardzo dawny.
A mianowicie myślałem od stworzeniu wątku procesu aktualizującego grafikę. Niestety plan był wtedy dla mnie niewykonalny, nie wiedziałem jak się za to zabrać w RGSS, dopiero uczyłem się tego języka.

Teraz problem jest aktualny. Przeszukałem całą masę stron o RGSS i nic.
Jest pewien postęp: mam dwa wątki. Tyle, że gra wyłącza się jakąś sekundę - dwie po stworzeniu wątku. Oto i skrypt, którego użyłem.

class Scene_Loading
def main
#Kod łądujący bazę danych, odczytujący konfigurację, sprawdzający dostępność aktualizacji itp. pomijam
ct = Win32API.new("kernel32","CreateThread",'pippip','i')
$threadvar = "\0" * 1024 * 1024
$thread = ct.call(nil,1024*1024,:thread.to_s,nil,0,$threadvar)
print("Wystąpił błąd w trakcie inicjacji wątku.\n\n") if $thread == 0
#Przejście do menu pomijam również
end
def thread
Win32API.new("kernel32","Beep",'ii','i').call(500,1000)
sleep(5)
end
end
Znam błędy typu nil, nile zamieniałem na '', pointery na integery itp., ale nic to nie dało. Jedyny efekt był taki, że wątek w ogule się nie tworzył.
Istnieje również funkcja BeginThread, którą chętniej bym użył, w C++ ją preferuję. Niestety nie mogę jej wykorzystać, nie mogę jej odkodować.

Z góry dziękuję za wszelką pomoc i pozdrawiam.
Dawid Pieper
22-01-14 16:50
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
dawidpieper Offline
*


Liczba postów: 38
Dołączył: 25-05-13

Pomógł: 5



Post: #2
RE: Wielowątkowość w RGSS

Witam!
Problem został rozwiązany.
Szukałem biblioteki zlib do rubiego. Przeszukując dostępne biblioteki znalazłem bibliotekę Thread.
Skopiowałem ją do Rpg Maker'a i działa.

Podaje rozwiązanie dla zainteresowanych.

Nad main należy wkleić następujący skrypt:
Spoiler: (Otwórz)
W skrypcie znajduje się instrukcja, ale na wszelki wypadek ją przepiszę.
W miejscu,gdzie uruchomiony ma zostać nowy wątek, piszemy
Thread.new {
#instrukcje wątku
}

Pozdrawiam
Dawid Pieper
23-01-14 16:19
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika
"Pomógł" przyznał(a):
Wątek zamknięty 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości

Kontakt | Ultima Forum | Wróć do góry | Wróć do forów | Wersja bez grafiki | RSS
Powered By MyBB. © 2013 MyBB Group. All Rights Reserved.
Skórka by Ayene.