2
我想了解是否存在使用InterlockedCompareExchange()來更改由CreateFileMapping(INVALID_HANDLE_VALUE創建的段中的內存並在多個進程之間共享的任何隱藏問題。共享內存段中的位置的原子比較和交換
換句話說,進程是否依賴CAS語義來操作它們共享的內存塊?我想他們可以,只是想確認一下。
謝謝
我想了解是否存在使用InterlockedCompareExchange()來更改由CreateFileMapping(INVALID_HANDLE_VALUE創建的段中的內存並在多個進程之間共享的任何隱藏問題。共享內存段中的位置的原子比較和交換
換句話說,進程是否依賴CAS語義來操作它們共享的內存塊?我想他們可以,只是想確認一下。
謝謝
CAS操作將與該內存完美配合。文件映射API和虛擬內存系統完成將內存映射到多個進程的所有艱難工作。當你把手放在記憶中時,你無法將它與其他任何記憶區分開來。
大衛,這是一個「聰明的猜測」還是你寫了任何實際依賴於此的代碼?理論上這應該工作得很好,但是我正在尋找的是確認Windows內存管理器中沒有任何已知的與此有關的怪癖。 – Angstrom
這只是一天結束時的記憶。它與使用VirtualAlloc映射的內存真的沒有什麼不同。 –
夠公平的,謝謝。 – Angstrom