Diskuze: Multicore C++
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 7 zpráv z 7.
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj....operační systém nabízí pouze vlákna a procesy, v tomhle
případě je lepší použít vlákna. Nastuduj si knihovnu std::threading.
Určitě jde nějak funkci donutit, aby běžela na jiném jádře, ale obecně
se to nepoužívá a nechá se na operačním systému, aby běh naplánoval. OS
pravděpodobně funkci na jiném jádře spustí, pokud není vytížený.
POužití vláken by k tomu mělo stačit.
Pokud opravdu chceš nastavit, aby určité vlákno běželo pouze na určitém procesoru (nebo určité skupině procesorů), můžeš k tomu využít na Windows funkci SetThreadAffinityMask. Na jiných OS bude existovat funkce s podobným efektem.
Jak ale píše Patrik, spřažení vláken/procesů s určitými procesory se obvykle nepoužívá, protože operační systém (či framework) plánuje dostatečně dobře. Může se to hodit například v případě, že tvůj kód běží na NUMA stroji (mnoho procesů s různou vzdáleností mezi nimi a moduly paměti), takže opakovaný přesun vlákna z jednoho procesoru na jiný je extrémně drahý (a program může běžet dokonce pomaleji než třeba na běžném dvoujádře.
Jedná se o 2D hru "jen projekt do šuplíku" který obsahuje i 2D editor a
idea tohoto všeho bylo aby funkce1 nebrzdila funkci2. Myslím si, že použití
vláken bude nejlepším řešením.
Děkuji za odpovědi
Ahoj,
chci říci, že je dobré, že máš vysoké cíle, hlavně s tím paralelismem v C. Dobrá knížka by možná mohla být například kniha Programování aplikací pro vícejádrové procesory, ale je asi dost náročná. Píše hlavně o využití C a částečně i Assembleru. Pokud s programováním jako takovým začínáš, možná by pro Tebe bylo lepší začít s vyššímy jazyky C# nebo Java, které jsou příznivější pro programátory a od počátku jsou vybaveny pro práci s vícejádrovými procesory a jejich využití. Při vývoji kritických aplikací se také dělá to, že se například napřed aplikace napíše ve vyšším jazyce (C#, Java) a po odladění se přepíše do výkonnějšího C nebo C++.
Přeji Ti úspěch. J.
Programuji už delší dobu čistě jen v C++, + k tomu používám grafickou knihovnu SFML,GL a sem tam WinApi. Ale přece jen sem se chtěl dostat trošku dále. Víc využívat vlákna, šablony a celkově se do toho více dostat, proto sem potřeboval poradit co přesně či jakou cestou se vydat. Každopádně už sem našel pár knih co odkazují na threading a problematiku s tím spojenou.
Ahoj,
to jsi dobrý, kolik toho umíš! Já jsem se zatím rozhodl vytvářet aplikace v Javě, někdy i s využitím paralelismu CPU jader.
Pole mě lepší volbou než Java a C# začínají být plně kompilované jazyky D a Rust. Oba jsou IMHO hodně moderní, rychlí a výborně využívající schopností hardware, jako CPU, GPU a ev. DSP jádra.
Ovšem C++ tu již je přeci jen déle a spoustu věcí můžeš prostě převzít a upravit. Dnes to již asi jinak nejde.
Přeji hodně štěstí.
Zobrazeno 7 zpráv z 7.