use lua coroutine to implement c++ asynchronous task