用于SHGetFileInfo的MSDN文档非常正确地说:
您应该从后台线程调用此函数。如果不这样做,可能导致UI停止响应。
因此,我试图找出一个很好的方法来完成这个任务,我有一个很大的列表(80+)要做,并且希望并行化底层的I/O -我可以使用线程池,但我不是一个专业的Windows程序员,所以我想知道是否有更好的技术。
发布于 2011-01-04 16:37:30
创建要处理的文件名队列(链接列表就足够了;请考虑STL的std:: list )。为该队列创建一个锁(关键部分可以这样做)。产生一串线程(2-4).每个线程将获取锁,从队列中获取头部,释放锁并在循环中检索图标。如果队列中没有更多的项,则线程退出。就像这样。
发布于 2011-01-04 16:43:50
进行并行I/O调用可能不会给您带来任何速度(可能只是开销)。您可以尝试使用GBL库,并查看线程是否对您有帮助。编写处理程序函数以响应事件。然后,您可以轻松地在AsyncHandler之间切换,它使用线程池和Handler,这是同步的,以查看是否可以实现任何加速。
https://stackoverflow.com/questions/4595796
复制相似问题