gpt4 book ai didi

c++ - 在 C++ 中如何在不应对读/写访问的情况下复制变量

转载 作者:行者123 更新时间:2023-11-28 06:50:12 28 4
gpt4 key购买 nike

我有一个带有写访问锁的变量 (A)。我想将此变量复制到另一个变量 (B),但我不想复制写访问锁。我该怎么做?

    WICRect rcLock = { 0, 0, sc_bitmapWidth , sc_bitmapHeight };
IWICBitmapLock *pILock=NULL;
hr =pWICBitmap->Lock(&rcLock, WICBitmapLockWrite, &pILock); //this is where I create the lock


hr=pRT->CreateSharedBitmap(
IID_IWICBitmapLock,
static_cast<void *>(pILock),
&bp2,
&m_pBitmap1
);

//m_pBitmap1 is locked its a ID2D1Bitmap object

m_pBitmap2=m_pBitmap1; //i want m_pBitmap2 to be unlocked

最佳答案

你不能。

因为你不能保证读取整个存储不会被其他线程中断,你必须获取锁以确保没有人在写你的存储,而您正试图从中读取。

如果线程 (1) 开始读取,而线程 (2) 跳入并开始写入,则线程 (1) 实际检索到的可能是 previous存储值表示。

中间立场肯定是不需要的,它甚至可能不是一个有效的值; IE。这很糟糕。

关于c++ - 在 C++ 中如何在不应对读/写访问的情况下复制变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24094999/

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