Jody,

Regarding #3:  Pointers in SAVE RECORD…

This ½ of my biggest frustration:  The other half is that if a method contains 
any restricted item, then the whole method cannot be used. These are what kill 
it for me.
This “All or nothing” of a method (and any sub-dependency) is the killer.  It 
eliminates range-checking speed loss, but makes the re-coding effort really 
really bad.

I would be OK if we simply could not execute any lines of code that reference 
an IP variable.  But that, again, would require 4D to do more range-checking 
type stuff.

So, my suggestion becomes: Just make a separate instance of IP Vars.  Then we 
don’t lose any speed on runtime-checking, AND, we have FAR FAR less re-coding 
to do.

Regards,
Tony


On 11/1/16, 3:34 PM, "4D_Tech on behalf of G-Mail" 
<[email protected] on behalf of [email protected]> wrote:

    Tony:
    
    > QUESTION #1
    
     VERY LIKELY  (We will)
    
    With the understanding of some frustration we would have, and understanding 
of what may be their reasons, we would use them because of the advantages of 
them being preemptive.
    
    The item I do not like is item #3. How can I code without pointers ;-)
    
    Thus far, I have not spent much time on how we will change our coding to 
handle multiple methods in a worker process accessing an object that we would 
normally give an interprocess scope. I know we could use process variables for 
the objects to achieve what we need. I just hate ‘polluting’ the rest of the 
processes with these process variables needed for the Worker process. At the 
same time, I understand their need to not have to deal with IP variables being 
accessed from other non-worker processes.
    
    We have not run into the need of a plugin for a worker process, but I could 
see where it could be nice to have. I do understand that at this point they may 
want to just not permit them as an easy solution at this time.
    
    I can see your point you make about writing a method If(Preemptive)…. Else 
Do This. It makes maintaining our code easier.
    
    Of course this is just where we are at with our code and clients.
    
    
    > On 11/01/2016, at 1:03 PM, Tony Ringsmuth <[email protected]> wrote:
    > 
    > Greetings
    > 
    > I’m on a quest to persuade 4D to adopt a more useful implementation of 
preemptive processing than they are currently adopting. 
    > Please answer questions #1 and #2 below if you can.
    > 
    > CURRENT RESTRICTIONS to using preemptive processes (up through the 
upcoming release of v16):
    > 1: Any method that uses any restricted items cannot be called 
preemptively.  Restricted items include:
    >   A: Interprocess variables
    >   B: Plugins
    >   C: Various 4D commands
    >   D: Any component method that is not Preemptive save
    > 2: No method that calls any other method that has restricted items can be 
called preemptively
    > 3: Any method that saves records via pointers to a table is restricted 
(If you have any Table Trigger in the whole database that has any restricted 
items (as listed in #1 or #2))
    >   Example: SAVE RECORD($MyTable->)
    > 
    > QUESTION #1
    >       In light of the current restrictions, how likely are you to 
leverage the use of Preemptive Processing in the near future? 
    >       NOT LIKELY / SOMEWHAT LIKELY / VERY LIKELY
    > 
    >   YOUR COMMENTS:
    > 
    > 
    > IF your answer to #1 is “NO” , then consider this alternate 
implementation. 
    > 
    > TONY’S PROPOSED ALTERNATE STRATEGY:
    > 1: Each Preemptive worker process should have it’s own complete 
instantiation of IP Variables; similar to it’s set of Process variables.  The 
scope and lifespan of those IP variables would be limited to that worker 
process, and that worker process only.  It would be up to the developer to 
populate those IP variables, or do with them as he wishes.
    >   As a ~possible~ option to this:  perhaps we could have an option 
parameter to indicate to 4D to copy all IP variables from the current process 
to the new worker process
    > 
    > 2: IP variables would then become a non-restricted item, and can be 
freely used in Preemptive processes.
    > 
    > 3: 4D should NOT prohibit the use of methods in Preemptive processes 
based on any content therein; however, at runtime, if a method actually 
executes a prohibited command or pluggin: 4D would generate an error.
    >   So, you could code like:
    >   IF($InPreemptive_b)
    >           `Do something safe for Preemptive
    >   ELSE
    >           `Use some command that is NOT Preemptive compliant
    >   END IF
    > 
    > QUESTION #2
    > If this strategy was implemented, how likely would you be to leverage the 
use of Preemptive Processing in your applications?
    > 
    > 
    > I appreciate your feedback in this
    > Thanks!
    > Tony Ringsmuth
    > 
    > 
    > **********************************************************************
    > 4D Internet Users Group (4D iNUG)
    > FAQ:  http://lists.4d.com/faqnug.html
    > Archive:  http://lists.4d.com/archives.html
    > Options: http://lists.4d.com/mailman/options/4d_tech
    > Unsub:  mailto:[email protected]
    > **********************************************************************
    
    **********************************************************************
    4D Internet Users Group (4D iNUG)
    FAQ:  http://lists.4d.com/faqnug.html
    Archive:  http://lists.4d.com/archives.html
    Options: http://lists.4d.com/mailman/options/4d_tech
    Unsub:  mailto:[email protected]
    **********************************************************************


**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[email protected]
**********************************************************************

Reply via email to