本文整理汇总了C++中ManualExecutor::run方法的典型用法代码示例。如果您正苦于以下问题:C++ ManualExecutor::run方法的具体用法?C++ ManualExecutor::run怎么用?C++ ManualExecutor::run使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ManualExecutor
的用法示例。
在下文中一共展示了ManualExecutor::run方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: via
TEST(ViaFunc, isSticky) {
ManualExecutor x;
int count = 0;
auto f = via(&x, [&]{ count++; });
x.run();
f.then([&]{ count++; });
EXPECT_EQ(1, count);
x.run();
EXPECT_EQ(2, count);
}
示例2:
TEST(ManualExecutor, runIsStable) {
ManualExecutor x;
size_t count = 0;
auto f1 = [&]() { count++; };
auto f2 = [&]() { x.add(f1); x.add(f1); };
x.add(f2);
x.run();
}
示例3: foo
TEST(Via, then2Variadic) {
struct Foo { bool a = false; void foo(Try<Unit>) { a = true; } };
Foo f;
ManualExecutor x;
makeFuture().then(&x, &Foo::foo, &f);
EXPECT_FALSE(f.a);
x.run();
EXPECT_TRUE(f.a);
}
示例4: while
TEST(Via, viaRaces) {
ManualExecutor x;
Promise<Unit> p;
auto tid = std::this_thread::get_id();
bool done = false;
std::thread t1([&] {
p.getFuture()
.via(&x)
.then([&](Try<Unit>&&) { EXPECT_EQ(tid, std::this_thread::get_id()); })
.then([&](Try<Unit>&&) { EXPECT_EQ(tid, std::this_thread::get_id()); })
.then([&](Try<Unit>&&) { done = true; });
});
std::thread t2([&] {
p.setValue();
});
while (!done) x.run();
t1.join();
t2.join();
}