本文主要是介绍【C++】如何得知函数是否为第一次调用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
以下代码段是取自cpprest中的一段代码,
其中巧妙的地方:静态变量、非静态变量和std::call_once的结合使用。
第一次接口被调用,以下每一行代码都被执行,std::once_flag of被置位。
之后的调用,因为of为静态变量,第一次调用时将其置位,第二次调用就不会执行其中的执行函数。
对于是否为第一次调用,通过std::pair的first成员值来体现。
std::pair<bool, platform_shared_threadpool*> initialize_shared_threadpool(size_t num_threads)
{static uninitialized<platform_shared_threadpool> uninit_threadpool;bool initialized_this_time = false;static std::once_flag of;std::call_once(of, [num_threads, &initialized_this_time] {uninit_threadpool.construct(num_threads);initialized_this_time = true;});return{initialized_this_time,&uninit_threadpool.storage};
}
这篇关于【C++】如何得知函数是否为第一次调用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!