Uzjel Opublikowano 3 Września 2008 Udostępnij Opublikowano 3 Września 2008 thread_num_of_processors() - Zwraca ilość rdzeni/procesorów. Zawsze masz takie zapytanie ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marmot Opublikowano 3 Września 2008 Udostępnij Opublikowano 3 Września 2008 Za grosz mojej wypowiedzi nie zrozumiałeś, tylko sobie posta nabiłeś, który się ma kompletnie nijak do mojego. Co mnie obchodzi sprawdzanie ilości rdzeni, do czego funkcję widziałem. Mnie interesuje, czy jest pewna automatyzacja związana z tym przydzielaniem do rdzeni w przypadku, gdy program chce rozdzielić na więcej rdzeni, niż komputer autentycznie posiada, czy trzeba samemu się babrać z tym, co moim zdaniem by było głupie i zwielokrotniło ilość pracy do wykonania. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 4 Września 2008 Autor Udostępnij Opublikowano 4 Września 2008 Mnie interesuje, czy jest pewna automatyzacja związana z tym przydzielaniem do rdzeni w przypadku, gdy program chce rozdzielić na więcej rdzeni, niż komputer autentycznie posiada Wtedy funkcje zwrócą błąd. Jak chcesz mieć jakąkolwiek automatyzację, to nie nakładaj na wątki żadnych masek, wtedy scheduler sam będzie decydował o tym gdzie i kiedy wątki będą wykonywane. Oczywiście może wyjść tak, że wszystkie wątki będą wykonywane na głównym rdzeniu/procesorze. Lepiej zaprogramować to samemu, jeśli chcesz tym lepiej zarządzać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marmot Opublikowano 4 Września 2008 Udostępnij Opublikowano 4 Września 2008 Dlatego raczej nie skorzystam z tego DLL. Wolę sam rozdzielić pracę na rdzenie według uznania, ale ogólnie by bardzo się zwielokrotniła praca i zwiększyła ilość kodu, jakbym musiał sprawdzać ile jest rdzeni, jak rozdzielić jak jest mniej niż przewidywałem, itd. Cóż, programowanie... to już wykracza daleko poza bariery prostoty GMa ;p . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 4 Września 2008 Administratorzy Udostępnij Opublikowano 4 Września 2008 jest też windows xp 64... ;p więc się mylisz ;) I to też nic nie ma do znaczenia. 64 obsługuje po prostu 64bitowe procki, zamiast 32 bitowe. Owszem zwykyły XP przydziela wątki jednemu PROCESOROWI i więcej nie obsługuje, co nie znaczy, że nie obsługuje więcej RDZENI. Przecież teraz większość procesorów jest dwurdzeniowa. (komputer z procesorem dwurdzeniowym, a komputer dwuprocesorowy to nie to samo) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 4 Września 2008 Udostępnij Opublikowano 4 Września 2008 Dlatego raczej nie skorzystam z tego DLL. Wolę sam rozdzielić pracę na rdzenie według uznania, ale ogólnie by bardzo się zwielokrotniła praca i zwiększyła ilość kodu, jakbym musiał sprawdzać ile jest rdzeni, jak rozdzielić jak jest mniej niż przewidywałem, itd. Cóż, programowanie... to już wykracza daleko poza bariery prostoty GMa ;p . Tworzysz nowy wątek, jeśli masz 2 rdzenie pójdzie na drugi jeśli nie będzie działał na pierwszym proste. Jak będziesz rozdzielał według uznania to nic dobrego raczej z tego nie wyniknie no chyba, że jesteś pro w wielowątkowości. Użyj mt z WinAPI czy ZThread, boost. W thinking in c++ w tomie 2 jest dość obszerne wyjaśnienie biblioteki ZThread. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
adam014 Opublikowano 4 Września 2008 Udostępnij Opublikowano 4 Września 2008 @UP: A od czego masz funkcje sprawdzającą liczbe rdzeni? Kilka if'ów i masz załatwione :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 4 Września 2008 Udostępnij Opublikowano 4 Września 2008 Niestety nie wiem jak skomentować twoją bezsensowną wypowiedź. Radze już zacząć przygotowywać się do matury bo czytanie ze zrozumieniem jest u Ciebie na bardzo niskim poziomie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 4 Września 2008 Udostępnij Opublikowano 4 Września 2008 will on ma dopierro 15 lat... ty maturę pewnie za rok masz wiec ocb... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 4 Września 2008 Udostępnij Opublikowano 4 Września 2008 will on ma dopierro 15 lat... ty maturę pewnie za rok masz wiec ocb... Tak więc na test na koniec gimnazjum. 15 lat to wystarczająco aby potrafić czytać ze zrozumieniem szczególnie, że nie ograniczał go czas. edit: @down Ale tylko minimalnie ;p 10 punkt regulaminu Borek Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marmot Opublikowano 4 Września 2008 Udostępnij Opublikowano 4 Września 2008 Ale na sprawdzianie gimnazjalnym też trzeba umieć czytać ze zrozumieniem ;p . EDIT: Ech, Will szybszy Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matthew Opublikowano 4 Września 2008 Udostępnij Opublikowano 4 Września 2008 A od czego masz funkcje sprawdzającą liczbe rdzeni? Kilka if'ów i masz załatwione No to super, ale tym osobom, którzy mają jeden rdzeń w procesorze funkcja zwróci wartość -1, czyli błąd. IFa dasz i co? To tylko zapobiegnie użyciu wątku. Z drugiej strony, można po else wstawiać wątki do pierwszego rdzenia, która na pewno jest lub po prostu zrobić zmienną z ilością rdzeni i jeśli wynosi ona 4 to przypisać do odpowiednich zmiennych nr tych rdzeni, czyli: GML rdzen1 = 1; // 0001 rdzen2 = 2; // 0010 rdzen3 = 4; // 0100 rdzen4 = 8; // 1000 a jak jest mniej to przekazywać pracę poprzedniemu rdzeniowi: GML rdzen1 = 1; // 0001 rdzen2 = 2; // 0010 rdzen3 = 4; // 0100 rdzen4 = 4; // 0100, przejmuje nr poprzedniego rdzenia, czyli jeśli nie ma czwartego rdzenia, to jest on traktowany jako trzeci rdzeń Tak to widzę, ale nie znam się, więc nie mówię, że to jest bezbłędne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Harv Opublikowano 4 Września 2008 Udostępnij Opublikowano 4 Września 2008 przeciez za pół roku czy rok moze wczesniej procki beda miały 8 rdzeni. i tu pytanie, ile rdzeni moze uzywac rdzeni? nieskonczonosc? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 4 Września 2008 Udostępnij Opublikowano 4 Września 2008 ile rdzeni moze uzywac rdzeni?Co? :P Napisz bardziej po polsku :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 4 Września 2008 Autor Udostępnij Opublikowano 4 Września 2008 O, właśnie. Pomyliłem się wcześniej z thread_affinity_mask w opisie - gdy wystąpi błąd zwraca 0, nie -1 :) już poprawiłem posty. No to super, ale tym osobom, którzy mają jeden rdzeń w procesorze funkcja zwróci wartość -1, czyli błąd. IFa dasz i co? To tylko zapobiegnie użyciu wątku. Mu chodziło raczej o coś takiego: GML global.thread = thread_create( "jakis kod GML", 1 ); switch ( thread_num_of_processors() ) { case 2: thread_affinity_mask( global.thread, 2 ); break; // maska na drugi rdzeń case 3: thread_affinity_mask( global.thread, 4 ); break; // maska na trzeci rdzeń case 4: thread_affinity_mask( global.thread, 8 ); break; // maska na czwarty rdzeń } // W innym wypadku maska nie będzie ustawiona // lub if ( thread_num_of_processors() > 1 ) thread_affinity_mask( global.thread, 2 ); // maska na drugi rdzeń // można by zrobić też tak thread_affinity_mask( global.thread, 1 + ( thread_num_of_processors() > 1 ) ); // maska na drugi rdzeń ( jeśli istnieje takowy ) // czy tam thread_affinity_mask( global.thread, 1 << thread_num_of_processors() - 1 ); // maska na ostatni rdzeń Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Harv Opublikowano 5 Września 2008 Udostępnij Opublikowano 5 Września 2008 miało być: ile rdzeni to moze obsłuzyc? nieskonczonosc? sorry, byłem tak styrany ze juz nawet nie kojarzyłem co sie dzieje wokół mnie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 5 Września 2008 Autor Udostępnij Opublikowano 5 Września 2008 32 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
fervi (Skovv) Opublikowano 6 Września 2008 Udostępnij Opublikowano 6 Września 2008 Super :) moja ocena 5/5 Ide testować Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 31 Stycznia 2009 Udostępnij Opublikowano 31 Stycznia 2009 Dobre to to :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SerMSYS Opublikowano 10 Kwietnia 2009 Udostępnij Opublikowano 10 Kwietnia 2009 Zauważyłem błąd w GMThreads. Kiedy mam dwa działące wątki to podczas wykonywania skryptu: global.r = script_if(global.a,'TRUE','FALSE') script_if: if(argument0) then return argument1 return argument2 script_if czasami zwraca 0 niezależnie od argumentów (nawet jeśli są to stringi!) To się nie dzieje bez GMThreads. Błąd obejmuje wszystkie niestandardowe skrypty wykonywane w wątkach i Game Maker. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 10 Kwietnia 2009 Udostępnij Opublikowano 10 Kwietnia 2009 script_if: if(argument0) then return argument1 return argument2 Ten twój skrypt_if jest naprawdę chory. Jeśli argument0 = 0 to zwróć argument1 zwróć argument2 Przecie to nie ma ładu ani składu :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 10 Kwietnia 2009 Udostępnij Opublikowano 10 Kwietnia 2009 Jako taki ład i skład ma. Jeśli arg0 jest prawdziwy to zwraca arg1, a jak nie to arg2. Czli arg0 to warunek, a arg1 i arg2 to możliwe wyniki. Ale ogólnie to bez sensu jest, bo to takie zastąpienie zwykłego ifa funkcją żeby kod trochę skrócić :P Znaczy trochę sensu ma. Jeśli używa tego dużo to ma przejrzyściej niż jakby ifował ciągle. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 10 Kwietnia 2009 Udostępnij Opublikowano 10 Kwietnia 2009 Crackkk-GM, jednak jesteś tępy, kod ma ład... I po drugie if( argument0 ) nie sprawdzi czy jest zerem tylko czy jest wyrażenie prawdziwe czyli czy argument0 nie jest null bądź zerem albo pustą zmienną Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 10 Kwietnia 2009 Udostępnij Opublikowano 10 Kwietnia 2009 Nie, sprawdzi, czy agument 0 jest większy od 0. Przynajmniej w GMie, bo np. w cpp jest normalnie, != 0. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 10 Kwietnia 2009 Udostępnij Opublikowano 10 Kwietnia 2009 ale można sprawdzić w drugą stronę np czy argument jest mniejszy niż 1 ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 10 Kwietnia 2009 Autor Udostępnij Opublikowano 10 Kwietnia 2009 @SerMSYS: Hm, ten błąd występuje pewnie dlatego, że GM nie jest przystosowany do multi-threadingu i dlatego przechwytuje niewłaściwe parametry przekazane do skryptu... na to raczej nic nie da się poradzić ale sprawdzę jeszcze. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 10 Kwietnia 2009 Udostępnij Opublikowano 10 Kwietnia 2009 i znów wykazałem jak mało wiem o programowaniu i komputerach ;p ehh Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SerMSYS Opublikowano 10 Kwietnia 2009 Udostępnij Opublikowano 10 Kwietnia 2009 @Crackkk-GM: Ten skrypt to jest tylko prosty przykład, tak samo jest ze wszystkimi niestandardowymi skryptami. @SerMSYS: Jedyne co mogę wymyśleć to rozbudować skrypty na podstawowe funkcje w wątkach. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SerMSYS Opublikowano 15 Kwietnia 2009 Udostępnij Opublikowano 15 Kwietnia 2009 Ominołem pare problemów używając ds_queue aby wyeliminować konkurencje. Inaczej modifikowanie struktur przez kilka wątków naraz ma katastrofalne konsekwencje. Teraz tylko przydała by mi się funkcja która zwraca błąd w specyficznym wątku... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 15 Kwietnia 2009 Autor Udostępnij Opublikowano 15 Kwietnia 2009 Hm, wprowadzając taką funkcję musiałbym też dodać funkcję "zamykającą" uchwyt wątku, bo jakoś trzeba będzie zwalniać pamięć którą trzeba zachować dla każdego wątku by móc odczytać błąd, więc będzie nieco mniej wygodnie ;p no chyba, że zrobiłbym opcję automatycznego zwalniania ustawianą w thread_create, której można by użyć gdy nie będzie takiej potrzeby by sprawdzać błąd ;o Ok, w wolnym czasie dodam tą funkcje + funkcje służące do synchronizacji wątków które już dawno miałem zamiar wprowadzić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się