Párhuzamos számítással számold meg a betűk gyakoriságát szövegekben.
A párhuzamosság lényege, hogy olyan dolgokat végzünk párhuzamosan, amelyeket sorosan is el lehet végezni. Gyakori példa erre a betűk gyakoriságának megszámolása. Használj párhuzamosságot, hogy kiszámítsd az egyes betűk összesített gyakoriságát a szövegek listájában.
A párhuzamosságot C++-ban többféleképpen is megvalósíthatod. Az Exercism online futtatója támogatja a C++17-et, így használhatod az algoritmusok könyvtárának végrehajtási irányelveit. Egy másik lehetőség a szálak kézi kezelése. Ne feledd azonban, hogy egy szál létrehozása meglehetősen költséges (egy szálkészlet használata segítene).
Ha helyben dolgozol, természetesen azt használsz, amit csak szeretnél. Egy nem szabványos könyvtárakat használó megoldás azonban valószínűleg nem fog működni az Exercism online futtatójával.
Ha helyben dolgozol, opcionálisan futtathatsz egy teljesítménytesztet, hogy képet kapj a különböző implementációk gyorsulásáról.
A teljesítménytesztet az EXERCISM_INCLUDE_BENCHMARK CMake-kapcsoló aktiválásával engedélyezheted:
cmake -DEXERCISM_RUN_ALL_TESTS=1 -DEXERCISM_INCLUDE_BENCHMARK=1 .
A GCC C++ szabványos könyvtárának implementációja (libstdc++) a TBB-re támaszkodik.
Ha a TBB nem érhető el, egy szekvenciális verzióra esik vissza, még akkor is, ha párhuzamos végrehajtást kértél.
Ubuntun telepítened kell a libtbb-dev csomagot:
apt-get install libtbb-dev
macOS-en a Homebrew segítségével telepítheted a TBB-t:
brew install tbb
A Clang libc++-ja a 17-es verziótól kezdődően kísérleti, részleges támogatást nyújt a párhuzamos algoritmusokhoz.
A bekapcsolásához meg kell adni a -fexperimental-library fordítókapcsolót.
Az Apple Clang 15 és a korábbi verziók nem támogatják a párhuzamos algoritmusokat.
Linuxon és macOS-en ehhez a feladathoz a GCC használatát javasoljuk (az alapértelmezett libstdc++ könyvtárral együtt).
A Microsoft MSVC-je legalább a VS 2017 15.7 óta támogatja a párhuzamos algoritmusokat anélkül, hogy bármilyen további könyvtárat telepíteni kellene.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) C++ nyelvet 19 fogalom100 feladat segítségével, valódi emberi mentorálással, mindez ingyen.
A konkurencia és a párhuzamosság közötti különbségeket járjuk körbe, olyan nyelvek eltérő megközelítéseit szemügyre véve, mint a JavaScript, a Go, az Elixir és a Rust.