我正在尝试使用谷歌测试/模拟测试阻塞与异步。
不幸的是,我在想出某种测试来确保异步在第一种情况下发生并在第二种情况下阻塞时遇到了麻烦。
有没有办法确认 std::future 的行为方式应有尽有?
代码
#include <gtest/gtest.h>
#include <future>
static unsigned a_slow_calc()
{
sleep( 1 );
return 1u;
}
TEST( Test_future, Ensure_async )
{
// 1. immediately returns
std::future<unsigned> answer = std::async( a_slow_calc );
// 2. std::future::get BLOCKS until the result is ready
EXPECT_EQ( 1u, answer.get() );
}