Hi Neil,
> On Jan 30, 2019, at 3:40 PM, Dennis, Neil <[email protected]> wrote: > >> If a shared method is marked as preemptive capable, any shared method it >> uses must also be marked as preemptive capable. Otherwise 4D says the method >> further down in the call chain is not thread safe even if it has no thread >> unsafe commands. > > Wait, If the parent is marked preemptive the children can be marked > indifferent and still run preemptive. > > I have been wrong once today, am I wrong again? Yes, twice in one day if we are talking about components and shared methods :). I have a component that includes a lot of different libraries. I can selectively build different versions of the component by choosing which method groups to make shared. I built a Postgres client component, tested in preemptive mode, and all was good. Next, I went to save all of the source in my version control system. My method to do this makes all project methods shared because I don't want the version history to be changed by the component build which only makes specific method groups shared. Otherwise, methods would show up as changed just because the shared attribute was changed. After not changing a single line of code and changing all methods to shared, I suddenly had 300+ compiler errors. This took hours to sort out. Any shared method called by a preemptive capable method must also be marked as preemptive capable. Otherwise 4D compiler generates an error but gives no clue as to why it is an error. John DeSoi, Ph.D. ********************************************************************** 4D Internet Users Group (4D iNUG) Archive: http://lists.4d.com/archives.html Options: https://lists.4d.com/mailman/options/4d_tech Unsub: mailto:[email protected] **********************************************************************

