我遇到了使用 C++ 在我的 Windows 窗体 GUI 应用程序中使用多线程的需要。从我对该主题的研究来看,后台工作线程似乎是我的目标。根据我的示例代码
System::Void backgroundWorker1_DoWork(System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e)
{
BackgroundWorker^ worker = dynamic_cast<BackgroundWorker^>(sender);
e->Result = SomeCPUHungryFunction( safe_cast<Int32>(e->Argument), worker, e );
}
但是,我需要弄清楚一些事情并弄清楚
- 后台工作线程会让我的多线程生活更轻松吗?
- 为什么我需要 e->Result?
- 传递给 backgroundWorker1_DoWork 函数的参数是什么?
- 参数 safe_cast(e->Argument) 的用途是什么?
- 我应该在我的 CPUHungryFunction() 中做什么?
- 如果我的 CPUHungryFunction() 有一个无限循环的 while 循环怎么办?
- 我可以控制我的工作线程获得的处理器时间吗?
- 可以更具体地控制循环在设定周期内循环的次数吗?当我只需要每秒循环 30 次时,我不想使用 cpu 每秒循环 1000 次。*是否需要控制 GUI 的更新速率?