diff --git a/src/uvw/util.cpp b/src/uvw/util.cpp index 201480fc..a18b0e80 100644 --- a/src/uvw/util.cpp +++ b/src/uvw/util.cpp @@ -295,4 +295,8 @@ UVW_INLINE void Utilities::sleep(unsigned int msec) noexcept { uv_sleep(msec); } +UVW_INLINE unsigned int Utilities::availableParallelism() noexcept { + return uv_available_parallelism(); +} + } // namespace uvw diff --git a/src/uvw/util.h b/src/uvw/util.h index 88192b7b..72326c2c 100644 --- a/src/uvw/util.h +++ b/src/uvw/util.h @@ -824,6 +824,13 @@ struct Utilities { * @param msec Number of milliseconds to sleep. */ static void sleep(unsigned int msec) noexcept; + + /** + * @brief Returns an estimate of the amount of parallelism a program should + * use (always a non-zero value). + * @return Estimate of the amount of parallelism a program should use. + */ + static unsigned int availableParallelism() noexcept; }; /** diff --git a/test/uvw/util.cpp b/test/uvw/util.cpp index cf1aeaec..bb4c4f0e 100644 --- a/test/uvw/util.cpp +++ b/test/uvw/util.cpp @@ -166,4 +166,6 @@ TEST(Util, Utilities) { ASSERT_NE(uvw::Utilities::setupArgs(1, &argv), nullptr); ASSERT_NE(uvw::Utilities::processTitle(), std::string{}); ASSERT_TRUE(uvw::Utilities::processTitle(uvw::Utilities::processTitle())); + + ASSERT_NE(uvw::Utilities::availableParallelism(), 0u); }