SDL_TICKS_PASSED documentation
我无法使SDL2的“SDL_TICKS_PASSED”功能起作用,当我尝试使用它时它似乎没有返回true。
Uint32 timeout = SDL_GetTicks() + 100;
if( SDL_TICKS_PASSED(SDL_GetTicks(), timeout) )
{
printf( "alarm triggered.............\n" );
}
只是阅读文档,我猜在100ms后函数将返回true并显示警报消息。我可能会做些傻事,但如果有人对这个问题有任何想法,请告诉我。
答案 0 :(得分:1)
这里的问题是你func getPromise() -> Promise<String> {
return Promise<String>.pending().promise
}
let promise: Promise<Any> = getPromise()
只被调用一次。它将在100个滴答之后返回Cannot convert value of type 'Promise<String>' to specified type 'Promise<Any>'
,但在此超时发生之前它不会阻塞。所以第一个电话会立即返回SDL_TICKS_PASSED
。要实现阻塞行为,应该循环检查:
true
或使用专用等待功能false
:
Uint32 timeout = SDL_GetTicks() + 100;
while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout))
{
/* wasting CPU time... */
}
// ok, 100 ticks elapsed when we get here...