我正在阅读一篇关于 Doom 3 源代码代码质量的博客文章,但我被困在一段我无法理解的 C++ 代码上。我应该说我不是 C++ 程序员。
有问题的代码如下所示:
Sys_StartAsyncThread(){ // The next look runs is a separate thread.
while ( 1 ){
usleep( 16666 ); // Run at 60Hz
common->Async(); // Do the job
Sys_TriggerEvent( TRIGGER_EVENT_ONE ); // Unlock other thread waiting for inputs
pthread_testcancel(); // Check if we have been cancelled by the main thread (on shutdown).
}
}
(取自http://fabiensanglard.net/doom3/index.php,在“展开循环”主题下)
这在我看来是一个作为参数传递给返回值的闭包Sys_StartAsyncThread()
- 但据我所知,这在 C++ 中是不可能的,而且也是Sys_StartAsyncThread()
void 类型,所以这里发生了什么?
的定义Sys_StartAsyncThread()
可以在这里找到。