预检清单
- 我已阅读了此项目的 Contributing Guidelines。
- 我同意遵循此项目遵循的 Code of Conduct。
- 我在 issue tracker 中搜索了一个与我想提交的功能请求相匹配的功能请求,但没有成功。
问题描述
nativeImage.createThumbnailFromPath()
在 Windows 上以阻塞方式实现
electron/shell/common/api/electron_api_native_image_win.cc
第 25 行 in efa7013
| | v8::Localv8::Promise NativeImage::CreateThumbnailFromPath( |
建议的解决方案
此和其他所有异步函数都应以非阻塞方式实现
考虑过的替代方案
无
其他信息
- 无响应*
5条答案
按热度按时间31moq8wy1#
RaisinTen,你能详细解释一下吗?
所有其他异步函数都应该以非阻塞方式实现。
你是说Windows函数吗?例如在macOS上,这是非阻塞的。
tzdcorbm2#
是的,对于
nativeImage.createThumbnailFromPath()
函数,我只讨论了Windows实现。然而,如果我们发现更多这样的异步函数阻塞当前线程,我们应该考虑将任务调度到其他线程。brvekthn3#
你能详细解释一下吗?我打算使用这个功能。尽管它是异步的,但它会阻塞主线程吗?
bvhaajcl4#
是的,没错!当你调用这个函数时,它会同步地运行
NativeImage::CreateThumbnailFromPath()
内部的一系列函数调用,这会阻塞当前线程。只有Promise的解析/拒绝作为微任务发生。我们需要将这些调用分派到不同的线程(在Chromium的线程池中)以实现非阻塞。参考一下,我之前发送了#31023来创建一个现有函数的非阻塞版本!;)dba5bblo5#
非常感谢你的解释!你刚刚帮我节省了几个小时的调试时间。