我有这个:
class VibraniumEngine {
public:
VibraniumEngine(VibraniumEngine const &) = delete;
VibraniumEngine(VibraniumEngine &&) = delete;
VibraniumEngine& operator= (VibraniumEngine const&) = delete;
VibraniumEngine& operator= (VibraniumEngine&&) = delete;
static VibraniumEngine* instance()
{
static VibraniumEngine instance;
return &instance;
}
void Start()
{
while(true){
// Do stuff
}
}
void Run();
};
#define sVibraniumEngine VibraniumEngine::instance()
int main()
{
std::thread vibraniumEngineThread (&VibraniumEngine::Start, sVibraniumEngine);
//How can I call here method `Run` as if it was called from `vibraniumEngineThread` context ?
}
这将创建类VibraniumEngine
的新线程,主线程将继续执行。
函数VibraniumEngine::Start
保持while
循环。
Vibranium引擎有其他公共变量和方法,而不仅仅是Start
。
是否有一种方法可以从主线程调用这些方法,就好像它们是从vibraniumEngineThread
调用的一样,也就是在创建的线程的上下文中,而不是从主线程调用的?
1条答案
按热度按时间ztyzrc3y1#
是否有一种方法可以从主线程调用这些方法,就好像它们是从
vibraniumEngineThread
调用的一样,也就是在创建的线程的上下文中,而不是从主线程调用的?不直接,不。您必须设置自己的排队系统,其中主线程可以将请求推入队列,然后工作线程从队列中取出请求并根据需要执行它们。
例如: