gpt4 book ai didi

c++ - Eigen 库 : Is writing to multiple columns concurrently safe?

转载 作者:行者123 更新时间:2023-11-30 05:07:16 25 4
gpt4 key购买 nike

我有一个 Eigen 库的矩阵,比如 A,我想从多个线程填充它的列,即线程调用 A.col(j) = xj。每一列 j 将只被一个线程写入一次。因此,不会有两个线程写入同一列,但可以同时写入两个不同的列。

我在 Eigen 的文档中发现了一段关于多线程代码的简短段落,说 Eigen::initParallel() 应该在线程环境中使用 Eigen 之前被调用。但是,它没有对在上述场景中使用 Eigen 做出声明。

按上述方式使用 Eigen 是否安全?提前致谢!

最佳答案

无论是否使用 Eigen,您描述的方式都是安全的,因为没有两个线程会写入同一内​​存位置(即数组中的列)。没有竞争条件,因为没有两个线程访问相同的内存位置内存位置,如果你按照你说的那样实现它。如果试图写入相同的内存位置,这将不是线程安全的。

如果您愿意,一个线程甚至可以多次读取或写入其分配的列而不用担心线程安全,甚至可以在同一列上读取或写入另一行——但前提是没有其他任何东西同时访问该列.

我不确定这是否是最佳实践,或者使用智能指针是否更好。无论哪种方式,您描述的过程都是线程安全的。

关于c++ - Eigen 库 : Is writing to multiple columns concurrently safe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47542824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com