gpt4 book ai didi

c++ - boost::unique_lock,多次读取正在减慢编写器的速度

转载 作者:行者123 更新时间:2023-11-28 04:58:14 27 4
gpt4 key购买 nike

我有一个应用程序,我使用 boost::shared_mutex 锁定在一个线程中编写一个 cv::Mat,然后从许多其他线程调用它。

这很好用,但是所有的读取都会减慢编写器的速度。我想这是因为写入正在等待所有读取完成。是否有一种不同类型的 boost 锁允许作者全速运行,有很多读者?还是我需要找到另一种方法来解决这个问题?

我的相关代码是:

//writer.h

cv::Mat currentFrame;

typedef boost::shared_mutex Lock;
typedef boost::unique_lock< Lock > WriteLock;
Lock frameLock;

//编写器.cpp

    WriteLock w_lock(frameLock);
cv_img.copyTo(currentFrame);
frameLock.unlock();

//阅读器.h

typedef boost::shared_mutex Lock;
typedef boost::shared_lock< Lock > ReadLock;

//阅读器.cpp

cv::Mat frame;

ReadLock r_lockz(writer->frameLock);
writer->currentFrame.copyTo(frame);
_lockz.unlock();

谢谢。

最佳答案

这里互斥的全部意义在于防止读/写冲突。当较慢的进程锁定资源时,速度减慢正是您所期望的。

瓶颈将始终存在于您当前的方法中;你需要找到另一个。也许是不同类型的并发(多个读者/作者?)。

关于c++ - boost::unique_lock,多次读取正在减慢编写器的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46707876/

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