Giriş
Ne olduğunu tam anlamadım. İleride daha detaylı yazarım. Şöyle yaparız.
Ne olduğunu tam anlamadım. İleride daha detaylı yazarım. Şöyle yaparız.
typedef boost::coroutines::coroutine<void>::push_type coroutine;
typedef boost::coroutines::coroutine<void>::pull_type yield_context;
typedef std::vector<coroutine> coroutine_list;
bool run_once_all(coroutine_list& coros)
{
bool pending = false;
for (auto& coro : coros)
{
if (coro)
{
coro();
pending = pending || !coro.empty();
}
}
return pending;
}
void run_all(coroutine_list& coros,
const boost::chrono::nanoseconds& idle_ns)
{
while (run_once_all(coros))
{
boost::this_thread::sleep_for(idle_ns);
}
}
void run_all(coroutine_list& coros, yield_context& yield)
{
while (run_once_all(coros))
{
yield();
}
}
Hiç yorum yok:
Yorum Gönder