我在程序中同时运行了20个线程,(创建20个线程并等待它们完成,然后启动另外20个),一段时间后我的程序变得非常缓慢。我需要释放任务或者执行任何特殊的操作吗?如果是,请问如何释放任务或进行特殊操作,如果不是,那么像这样的程序为什么会变慢有一个共同的原因吗?
我在程序中同时运行了20个线程,(创建20个线程并等待它们完成,然后启动另外20个),一段时间后我的程序变得非常缓慢。我需要释放任务或者执行任何特殊的操作吗?如果是,请问如何释放任务或进行特殊操作,如果不是,那么像这样的程序为什么会变慢有一个共同的原因吗?
ThreadPool
, 或通过任务并行库来使用(我比较推荐这种方式)。这很可能比自己创建线程并重复地阻塞它们更好、更简单和更清晰。while (program_not_ending)
{
wait_for_new_data_release; // Wait on thread's personal mutex
process_new_data;
resignal_my_mutex; // Cause the beginning of loop to wait again
release_semaphore_saying_I_am_done; // Increment parent semaphore count
}