2014-11-05 71 views
0

我在写一个使用GLEWMX上下文的插件。该插件在线程标识(1)下加载GLEWMX上下文。然后当我运行一些东西时,它会在线程标识(2)下运行该任务。我可以访问两个线程ID。访问正在运行的线程

我应该使用std:thread将活动线程切换到线程(1),以便我可以在该上下文中访问和运行事物吗?我该怎么做

回答

1

是的,没有。有些库确实被限制在单线程上运行,我假设GLEWMX就是其中之一。这确实意味着你不应该从线程2调用它。

然而,当你需要线程1完成的任务时,你不能切换“活动线程”。在现代计算机上,无论如何都有多个活动线程,所以线程2处于活动状态的事实并不意味着线程1是被动的。

正确的解决方案是为线程1创建一个线程安全工作队列。然后,线程2可以放入工作,线程1在准备就绪时选择工作。不幸的是,没有标准库支持,你必须自己拼凑一个。在线程1中使用std::condition_variable.wait

+0

我遇到的问题是我的程序Rhino正在创建所有这些线程,并且我只能访问线程ID,不确定如何访问线程最初创建的方式来执行工作队列......所以我想在第一个线程上调用一些东西,但这是一个很好的回应 – 2014-11-05 16:41:14