Vlakno – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vlakno – .NET – Fórum – Programujte.comVlakno – .NET – Fórum – Programujte.com

 

Miro17010
Stálý člen
26. 7. 2009   #1
-
0
-

Kedze je toto moja prva vec vo vlaknach( chcem vytvorit multithreading ) tak sa chcem spytat ci to nemam horsie ako si myslim.

		{

GameObject[] objs = this.GameObjects.ToArray();
int StepCurrent = 0;
int StepMax = objs.Length;

ThreadStart Step1_Objects = delegate {
int objID;

while( ( objID = StepCurrent++) < StepMax )
{

if( objs[objID].Activity >= this.MinimumActivity )
objs[objID].Step1_Internal( TimeDelta );

Console.WriteLine( Thread.CurrentThread.Name + objID.ToString() );
}
};

Thread t2 = new Thread( Step1_Objects );
t2.Start();
t2.Name = "ASDSAD";

Step1_Objects();

this.Step1( TimeDelta );
}


A tym ze je to zle myslim nato ze to nepocka asi na druhe vlakno, kym skonci, a tak mi hodi exception ktora je v subore.

Nahlásit jako SPAM
IP: 85.159.104.–
začinajúci programátor v .Net: C# & OpenTK: OpenGL( pouzivam ), OpenAL( zatial nepouzivam ), OpenCL( este som neskusal )
Miro17010
Stálý člen
26. 7. 2009   #2
-
0
-

A este som zabudol zrejme to neni multithread, ako ho tam dat??

Nahlásit jako SPAM
IP: 85.159.104.–
začinajúci programátor v .Net: C# & OpenTK: OpenGL( pouzivam ), OpenAL( zatial nepouzivam ), OpenCL( este som neskusal )
Miro17010
Stálý člen
26. 7. 2009   #3
-
0
-

tak toto teda neni dobre, Console.WriteLine( "ThreadEnd: "+objID+" "+Thread.CurrentThread.Name);

0 

2
3
4
5
6
7
ThreadEnd: 8
ASDSAD1 // Uz cely cyklus hry stihol prejst este raz( mam tam viac stepov ( pretoze pri multiT, nemozete sa pohybovat aj zistovat kolizie), ale ten zatial robim multi
ThreadEnd: 9 ASDSAD // kym sa toto vlakno skoncilo
0
2
3
ASDSAD1
ASDSAD5
4
7
ASDSAD6
ThreadEnd: 8
ThreadEnd: 9 ASDSAD

Nahlásit jako SPAM
IP: 85.159.104.–
začinajúci programátor v .Net: C# & OpenTK: OpenGL( pouzivam ), OpenAL( zatial nepouzivam ), OpenCL( este som neskusal )
Chrasty
~ Redaktor
+4
Posthunter
26. 7. 2009   #4
-
0
-

Co si představuješ pod slovem "multithread", když se ptáš, jak ho tam dát? Jakmile použiješ víc než jedno vlákno, tak máš multithreadovou aplikaci (multus - mnoho; thread - vlákno).

Jak sám vidíš, tak to multithreadově funguje, podle výstupu v souboru. Něco vypsalo primární vlákno, něco vypsalo sekundární vlákno.

Vsadím boty, že ta chyba na konci je způsobá ne-exkluzivním přístupem k poli objs. Pro zajištění ekluzivního přístupu se můžeš podívat do našeho krásného ( :-)))) ) seriálu o vláknech, který tady na Programujte je. http://programujte.com/?akce=clanek&cl=2008072600-vlakna-v-c#-3-dil

Mimochodem, to píšeš v XNA?

Nahlásit jako SPAM
IP: 193.179.196.–
Miro17010
Stálý člen
26. 7. 2009   #5
-
0
-

ne to mi vyhodi az pri Draw -e, a to len obcas co nastane ta chyba ze sa to vlakno nedokonci.

a tym multi thread som myslel ze pre viac jadrovy procak.

Nahlásit jako SPAM
IP: 85.159.104.–
začinajúci programátor v .Net: C# & OpenTK: OpenGL( pouzivam ), OpenAL( zatial nepouzivam ), OpenCL( este som neskusal )
Miro17010
Stálý člen
26. 7. 2009   #6
-
0
-

To Chrasty : problem bol v tom ze som nedosiel ani do 2. dielu serialu( metoda Join() )
:D nuz stava sa

Edit: A k tomu pristupu k objektom, tak pri Stepe mam kopiu arrayu objektov pri zaciatku, ale aj pri stepe sa mi vytvarau objekty a problem bol v tom ze uz zacalo vykreslovat a objekt nebol hotovy.

Nahlásit jako SPAM
IP: 85.159.104.–
začinajúci programátor v .Net: C# & OpenTK: OpenGL( pouzivam ), OpenAL( zatial nepouzivam ), OpenCL( este som neskusal )
Miro17010
Stálý člen
26. 7. 2009   #7
-
0
-

A este jedna vec ako zistim pocet procesorov?? ked ma dakto 8 jadrak to budem muset vytvorit 7 vlakien

Nahlásit jako SPAM
IP: 85.159.104.–
začinajúci programátor v .Net: C# & OpenTK: OpenGL( pouzivam ), OpenAL( zatial nepouzivam ), OpenCL( este som neskusal )
Miro17010
Stálý člen
26. 7. 2009   #8
-
0
-

To Chrasty : nepisem to v xna, robim si vlastny cross-platform engine, zalozeny na OpenTK, OpenGL
a robim ho v mono-develope

Nahlásit jako SPAM
IP: 85.159.104.–
začinajúci programátor v .Net: C# & OpenTK: OpenGL( pouzivam ), OpenAL( zatial nepouzivam ), OpenCL( este som neskusal )
Chrasty
~ Redaktor
+4
Posthunter
26. 7. 2009   #9
-
0
-

To Miro1701 : Je rozdíl mezi počtem procesorů a mezi počtem jader - některé serverové desky mají třeba dva sockety, když do každého nacpeš procesor, tak dostaneš dva fyzické procesory, které dohromady dávají třeba 8 jader (někdy označováno jako logický procesor).

Konkrétně počet jader zjistíš tímhle:

System.Environment.ProcessorCount

Počet fyzických procesorů se dá získat nějak přes ManagementObject, ale to bych se musel podívat.

Nahlásit jako SPAM
IP: 193.179.196.–
Miro17010
Stálý člen
26. 7. 2009   #10
-
0
-

a pocet jadier sa ako da zistit, a je aj 8jadrak desktop, 3.2 / 3.6 ghz(neviem uz) - Intel SkullTrail

Nahlásit jako SPAM
IP: 85.159.104.–
začinajúci programátor v .Net: C# & OpenTK: OpenGL( pouzivam ), OpenAL( zatial nepouzivam ), OpenCL( este som neskusal )
Chrasty
~ Redaktor
+4
Posthunter
26. 7. 2009   #11
-
0
-

Počet jader zjistíš právě tím

System.Environment.ProcessorCount
O SkullTrail vím, ale přece jen o těch serverech ví víc lidí, proto jsem je uvedl.

Nahlásit jako SPAM
IP: 193.179.196.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 44 hostů

Podobná vlákna

Pthreads vlakno — založil Ezechiel

Vlákno - Thread — založil Kenvelo

Super vlákno :D — založil crazy

C++ programovanie vlákno — založil limetka123

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý