Multithreading se stejnými funkcemi – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Multithreading se stejnými funkcemi – C / C++ – Fórum – Programujte.comMultithreading se stejnými funkcemi – C / C++ – Fórum – Programujte.com

 

Meph0
Newbie
20. 6. 2013   #1
-
0
-

Zdravím,ý

je možné pouštět opakovaně stejnou funkci v různých vláknech? Mě se stalo, že v druhém vláknu jsem dostal  hodnotu proměnné, která měla být jenom v prvním vláknu. Dělám to tak, že vytvořím proměnnou(strukturu) pro každé vlákno zvlášť a stejně dále v programu se to nějak smíchá. Potřebuji zkrátka pustit stejný kod ve více vláknech. používám <pthread.h>.

Díky za rady

Nahlásit jako SPAM
IP: 78.80.152.–
KIIV
~ Moderátor
+43
God of flame
20. 6. 2013   #2
-
0
-

z toho popisu by vznikl velice dlouhy seznam ... napriklad: jak se to v programu dal smicha? nepouzivas staticke promenne ve funkcich? neni v kodu chyba? proste bez kodu je to jen tipovacka

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Meph0
Newbie
20. 6. 2013   #3
-
0
-

#2 KIIV
kod je dlouhý, jde vlastně o fungující program nad kterým je vytvořená funkce, která jej pouští vícekrát a každý ve vlastním vláknu. Proto nedávám kód, protože by to bylo dlouhé. Ale jde vlastně o to udělat něco podobného, jako když v terminálu dáš více krát spustit program s různými parametry. Ty instatnce jsou nezávislé, vůbec by se neměli ovlivňovat a výsledky taky ne. Výsledky se ukládají do souborů.

Minimálně jsou tam statické funkce, s proměnnými si nejsem jistý.

Nahlásit jako SPAM
IP: 78.80.152.–
Meph0
Newbie
21. 6. 2013   #4
-
0
-

Vyřešeno:

Měl jsem použité globální proměnné v jednom souboru a ty se pravděpodobně používaly stejné pro více vláken. Tak jsem tyto proměnné přidal jako parametry do základní struktury, která je unikátní pro každé vlákno a už to běží :)

Nahlásit jako SPAM
IP: 78.80.152.–
vitamin
~ Anonymní uživatel
1092 příspěvků
21. 6. 2013   #5
-
+1
-
Zajímavé

#4 Meph
V c++ a vo vecsine prekladacov mas moznost vytvorit thread_local globalne premenne.

napr:

thread_local int global_int;	//kazdy thread bude mat vlastnu premennu (ak nemas c++11 tak zalezi na prekladaci, napr __thread a __declspec(thread))
Nahlásit jako SPAM
IP: 195.28.77.–
Meph0
Newbie
21. 6. 2013   #6
-
0
-

#5 vitamin
Já to mám čistě v C, ale každopádně díky, to je zajímavá informce ;)

Nahlásit jako SPAM
IP: 78.80.152.–
vitamin
~ Anonymní uživatel
1092 příspěvků
21. 6. 2013   #7
-
0
-

#6 Meph
V c11 existuje _Thread_local     (mozno treba <thread.h> )

V c99 to bude mat kazdy kompilator inak.

Nahlásit jako SPAM
IP: 195.28.77.–
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, 78 hostů

Podobná vlákna

Multithreading — založil michal

Multithreading — založil Filip0913

PASCAL multithreading — založil josef12345

Moderátoři diskuze

 

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