C++ 如何在睡眠方面以类似于Unity3D的方式使用Boost.Coroutine?
如何以类似于X毫秒睡眠的方式使用?一般来说,我们希望有一个corutine数组,允许它们使用WaitForSeconds对象的一些替代项作为收益率返回,来预测下一次执行。Boost.Coroutine中的这些东西有什么用处吗?或者如何从头开始重新创建效果?Boost.Fiber具有睡眠功能。见下文: Fiber是线程接口的Boost.Coroutine的包装器C++ 如何在睡眠方面以类似于Unity3D的方式使用Boost.Coroutine?,c++,boost,coroutine,C++,Boost,Coroutine,如何以类似于X毫秒睡眠的方式使用?一般来说,我们希望有一个corutine数组,允许它们使用WaitForSeconds对象的一些替代项作为收益率返回,来预测下一次执行。Boost.Coroutine中的这些东西有什么用处吗?或者如何从头开始重新创建效果?Boost.Fiber具有睡眠功能。见下文: Fiber是线程接口的Boost.Coroutine的包装器 // <boost/fiber/operations.hpp> namespace boost { namespace t
// <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)
}}
//
名称空间提升{
给这根光纤命名{
无效睡眠直到(光纤::时钟类型::时间点常数和睡眠时间);
模板
无效睡眠时间(计时::持续时间<重复,周期>常数和超时时间)
}}
<代码> > p>我使用C++ 11和Boost CORTENIN 2的协同程序类。
CoroBehaviour的用法与统一的单一行为非常相似,如下所示:
#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";
};
}
}
#包括“CoroBehaviour.h”
#包括
类示例类:公共行为
{
void Start()
{
start例程(coroutineA());
}
枚举器coroutineA()
{
回报率[=](科罗普什和收益率回报率)
{
//等一秒钟
标准::cout