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.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
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.
