From: david.brown@hesbynett.no   
      
   On 05/12/2025 18:57, MitchAlsup wrote:   
   >   
   > anton@mips.complang.tuwien.ac.at (Anton Ertl) posted:   
   >   
   >> David Brown writes:   
   >>> "volatile" /does/ provide guarantees - it just doesn't provide enough   
   >>> guarantees for multi-threaded coding on multi-core systems. Basically,   
   >>> it only works at the C abstract machine level - it does nothing that   
   >>> affects the hardware. So volatile writes are ordered at the C level,   
   >>> but that says nothing about how they might progress through storage   
   >>> queues, caches, inter-processor communication buses, or whatever.   
   >>   
   >> You describe in many words and not really to the point what can be   
   >> explained concisely as: "volatile says nothing about memory ordering   
   >> on hardware with weaker memory ordering than sequential consistency".   
   >> If hardware guaranteed sequential consistency, volatile would provide   
   >> guarantees that are as good on multi-core machines as on single-core   
   >> machines.   
   >>   
   >> However, for concurrent manipulations of data structures, one wants   
   >> atomic operations beyond load and store (even on single-core systems),   
   >   
   > Such as ????   
      
   Atomic increment, compare-and-swap, locks, loads and stores of sizes   
   bigger than the maximum load/store size of the processor. Even with a   
   single core system you can have pre-emptive multi-threading, or at least   
   interrupt routines that may need to cooperate with other tasks on data.   
      
   >   
   >> and I don't think that C with just volatile gives you such guarantees.   
   >>   
   >> - anton   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|