簡體   English   中英

Win32 InterlockedIncrement和InterlockedExchange是跨進程的原子嗎?

[英]Are Win32 InterlockedIncrement and InterlockedExchange atomic across processes?

MSDN說,互鎖的函數提供了一種簡單的機制,用於同步訪問多個線程共享的變量。

如果變量位於進程的共享內存中,我不確定它們是否可以跨多個進程的線程工作。

同樣,關於GNU GCC編譯器內在函數:__sync_add_and_fetch和__sync_lock_test_and_set呢?

這個問題本質上是針對兩個不同答案的兩個問題。

  1. 對於GCC中的__sync_XXX內置__sync_XXX ,答案是肯定的。

請參閱此處描述的任何此類在線文檔,這些內建函數通常會發出完全障礙,從而甚至防止內部推測處理器管道內部的負載。 每個多線程,多進程等共享內存都是安全的。

  1. 我對Windows InterLockedXXX功能一無所知。 但是MSDN知道,並說:

如果變量位於共享內存中,則不同進程的線程可以使用此機制

因此,兩個答案均為“是”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM