home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   sci.electronics.design      Electronic circuit design      143,102 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 142,965 of 143,102   
   bitrex to bitrex   
   Re: Call by reference protection   
   21 Feb 26 01:07:41   
   
   From: user@example.net   
      
   On 2/21/2026 12:55 AM, bitrex wrote:   
   > On 2/20/2026 6:09 PM, Don Y wrote:   
   >> On 2/20/2026 2:21 PM, bitrex wrote:   
   >>> On 2/20/2026 12:47 PM, Don Y wrote:   
   >>>> [Almost every piece of code in my system is a service or an agency.   
   >>>> As such, they all try to be N copies of the same algorithm running   
   >>>> on N different instances of objects of a particular type.  Easy   
   >>>> if you *design* for that case; tedious if you adopt /ad hoc/   
   >>>> methods!]   
   >>>   
   >>> Yeah, having mutable state in a multithreaded embedded environment   
   >>> without big-iron tools to manage mutable state across threads (like   
   >>> std::mutex and std::weak_ptr) kind of sucks!!   
   >>>   
   >>> Even for single-threaded embedded stuff I like treating C++ more like   
   >>> a functional language and passing non-const references to anything   
   >>> very rarely, those relationships are hard to reason about.   
   >>   
   >> Something has to "do work" -- i.e., make changes.   
   >>   
   >> E.g., the example of a single frame of video needing to be masked   
   >> can either be done by masking the original frame (thereby changing   
   >> it in the process) *or* by masking a copy of the original frame.   
   >>   
   >> It's up to the goals of the algorithm as to which approach to pursue;   
   >> if you don;'t need to preserve the original (unmasked) frame, then   
   >> creating a copy of it for the sole purpose of treating it as const   
   >> is wasteful.   
   >>   
   >> OTOH, creating a copy to ensure other actors' actions don't interfere   
   >> with your processing (and the validity of your actions) *has* value   
   >> (in that it leads to more predictable behavior).   
   >>   
   >> Nowadays, its relatively easy to buy horsepower and other resources   
   >> so the question boils down to how you use them.   
   >>   
   >> [My first "from scratch" commercial product had 12KB of ROM and 256   
   >> bytes of RAM plus the I/Os (motor drivers, etc.).  The cost of just   
   >> the CPU board was well over $400 (when EPROM climbed to $50/2KB).   
   >> Spending $20 on a single node is a yawner...]   
   >>   
   >> Decomposing a design into clients, services and agencies lets it   
   >> dynamically map onto a variety of different hardware implementations   
   >> and freely trade performance, power, size, latency, etc. as needed.   
   >> E.g., each object instance could be backed by a single server   
   >> instance -- or, all object instances can be backed by a single   
   >> server instance -- or, any combination thereof.  Each server can   
   >> decide how much concurrency it wants to support (how many kernel   
   >> threads to consume) as well as how responsive it wants to be (how   
   >> much caching, preprocessing, etc. it uses to meet demands placed   
   >> on it).   
   >   
   > It sounds like you're describing some very hard realtime baremetal   
   > system where you have the luxury of lots of memory to do very resource-   
   > intensive operations like full copies of video frames on the grounds of   
   > "predictability" (I think most embedded video processing on general-   
   > purpose CPUs would try very hard to avoid doing any full copies), but   
   > also can't afford the luxury of an MMU and/or a RTOS that supports some   
   > subest of POSIX, so you can use modern C++ features like smart pointers   
   > and mutexes. Maybe that would add too much overhead.   
      
   Is this a high-frequency trading box? Are you building a salami-slicer   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca