В C ++ как копировать переменные, не справляясь с правами чтения / записи

0

У меня есть переменная (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
  • 3
    Вы должны добавить больше деталей к вашему вопросу, особенно что именно означает «блокировка доступа для записи». Помогла бы также публикация минимального фрагмента кода с типом А и операцией, которую вы пытаетесь выполнить.
  • 0
    хорошо, я внесла изменения, которые вы просили
Теги:
visual-c++
mfc

1 ответ

1

Вы не можете.

Поскольку вы не можете гарантировать, что чтение всего хранилища произойдет без перерыва из какого-либо другого потока, вы должны приобрести блокировку записи, чтобы убедиться, что никто не пишет на ваше хранилище, пока вы пытаетесь прочитать его.

Если поток (1) начинает чтение, и поток (2) перескакивает и начинает записывать его в вероятность того, что какой поток (1) фактически извлекает, является промежуточным слоем перед предыдущим и вновь сохраненным представлением значения.

Конечно, средняя цель не нужна, и, вероятно, это даже не действительное значение; то есть. это плохо.

  • 0
    Есть ли способ снять блокировку записи? По сути, я хочу создать новую ячейку памяти, скопировать в нее значения заблокированной ячейки памяти и присвоить ей новое значение. Возможно, это недопустимое значение, но я хочу попробовать. Как я могу это сделать?
  • 0
    @ user3715097 вы можете попробовать удалить его, ничто не мешает вам; просто имейте в виду, что вы, вероятно, столкнетесь с проблемами гонок и синхронизации данных.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню