Как использовать Boost.Coroutine в моде, похожей на Unity3D Coroutine в плане сна?

Как пользоваться Boost.Coroutine в моде, похожей на Unity3D Coroutine с точки зрения сна за X миллисекунд? Как правило, мы хотим, чтобы массив сопрограмм позволял им форсировать следующее выполнение в будущем, используя некоторую альтернативу объекта WaitForSeconds в качестве возвращаемого значения. Есть ли какая-нибудь полезность для таких вещей в Boost.Coroutine или как воссоздать эффект с нуля?

2

Решение

Boost.Fiber имеет функцию сна. см. следуйте:

https://github.com/olk/boost-fiber

Boost.Fiber — это оболочка Boost.Coroutine для интерфейса потоков.

// <boost/fiber/operations.hpp>
namespace boost {
namespace this_fiber {
void sleep_until( fibers::clock_type::time_point const& sleep_time);

template< typename Rep, typename Period >
void sleep_for( chrono::duration< Rep, Period > const& timeout_duration)
}}
1

Другие решения

У меня есть класс сопрограмм с использованием C ++ 11 и повышение Coroutine2.
Использование CoroBehaviour очень похоже на MonoBehaviour of Unity, как показано ниже:

#include "CoroBehaviour.h"#include <iostream>

class ExampleClass : public CoroBehaviour
{
void Start()
{
StartCoroutine(coroutineA());
}

Enumerator coroutineA()
{
return [=](CoroPush& yield_return)
{
// wait for 1 second
std::cout << "coroutineA created";
yield_return(new WaitForSeconds(1.0f));
yield_return(StartCoroutine(coroutineB()));
std::cout << "coroutineA running again";
};
}

Enumerator coroutineB()
{
return [=](CoroPush& yield_return)
{
std::cout << "coroutineB created";
yield_return(new WaitForSeconds(2.5f));
std::cout << "coroutineB enables coroutineA to run";
};
}
}

Вы можете получить код здесь: https://github.com/exawon/CoroBehaviour

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector