在我的应用程序中,我有一个计算器线程和一个Main_Thread。两者都处理相同的数据。计算器线程进行预先计算,主线程可视化生成的数据。为了防止它们同时更改和读取数据,我使用boost mutex作为关键部分。
boost::recursive_mutex m_guard_calculation;
计算器线程:
m_guard_calculation.lock();
// do hard calculation work
m_guard_calculation.unlock();
主线程:
void update() //called every frame
{
if (m_guard_calculation.try_lock()) //only visualize if not locked, otherwise just skip
{
// do hard visualization work
m_guard_calculation.unlock();
}
}
在那种情况下,我的计算器线程将在某个时刻停止工作。 我假设我必须以某种方式唤醒我的计算器线程。我该怎么做?