1

我正在尝试从这个链接的 rust-cookbook 示例中的数据并行示例中学习 Rust。

但是,当我运行代码时(我认为是正确的依赖项),并行迭代器函数没有完成。这是我正在努力的确切回购。

当我cargo run在包含 5 个图像的项目的根目录下运行时,我在控制台中得到以下信息。

Current number threads: 4
Saving 5 thumbnails into 'thumbnails'...

但是,没有创建任何缩略图,并且程序永远不会退出。代码编译。

在我正在努力学习 Rust的另一个小 CLI中,我遇到了同样的问题,但我认为食谱中的示例更容易使用。

任何提示,即使是我可能会寻找的,将不胜感激。我想知道它是否与机器有关。

4

1 回答 1

1

这是imagecrate 的 JPEG 解码器中的一个已知死锁错误:GitHub 问题

JPEG解码本身内部默认使用rayon,当你自己使用rayon同时解码多个JPEG时,会触发这个bug。image作为一种解决方法,您可以通过指定crate 依赖项来阻止 JPEG 解码器使用 rayon ,Cargo.toml如下所示:

image = { version = "0.24.1", default-features = false, features = ["jpeg"] }

这会禁用imagecrate 的默认功能,其中之一是jpeg_rayon.

于 2022-02-22T08:07:23.837 回答