An idea on multithreading implementation
keith.clarke at clarkeandclarke.co.uk
Mon Jan 31 14:12:26 EST 2011
Taking Pete's idea a tad further, is there any mileage in considering shifting the 'threading' problem up from within the engine to the level of distributed computing/integration?
What if the main application could call upon an LC 'governor' library - with message broker/load balancer/workflow capabilities that could worry about state and overall application workflow, whilst using an SOA-like architecture, to spawn instances of LC engines, as needed, to run discrete processes (the 'threads') and pass results back through the 'governor' application? Could a set of LiveCode, platform-independent REST-type messages - request, acknowledgement, response - be used to manage the communications? The governor app could also provide process control, monitoring the triggered LC engine instances and if necessary, killing and restarting, etc. Would such an approach also allow greater scalability, with multiple LC 'work-horse' engines running on one or more boxes? That might be tempting for Revserver situations?
I don't really know what I'm talking about here - this is probably all metabollocks. However, perhaps the problems of managing a network of simple things might be easier than creating a bigger, monolithic, slower, riskier, multi-threading engine?
On 31 Jan 2011, at 18:41, Peter Haworth wrote:
> I'll admit that I've never had the need to do this with LC but it feels like it should be possible. How about this.
> Make your "Accounts Receivable" a separate standalone LC application and start it up from your main application when it starts up.
> The AR program would have an appleEvent handler in it looking for messages sent to it with a "send to program" command from your main App and use the request appleEvent command to get whatever data you send to it. Or your main app could put the data in some place accessible to both programs, perhaps an SQL table of pending requests.
> On receipt of the appleEvent, the AR program would do it's thing and send an AppleEvent back to your main program when it's done or report progress back at regular intervals, whatever you need it to do.
> When it's done, it would sit there waiting for another appleEvent to tell it what to do next.
> There don't seem to be equivalents to send to program and appleEvent for Windows but I'll bet some of the smart people on this list can suggest something (and perhaps a better way of doing it on a Mac)
> I'm sure this is an over-simplistic description but it seems like it oughta work?
> Pete Haworth
> On Jan 31, 2011, at 9:56 AM, Bob Sneidar wrote:
>> When I started this whole thread, what I had in mind was a simple method for allowing commands and even whole stacks to run concurrently with other stacks, while still being able to communicate with each other through the engine. All the stuff about enabling and disabling communications between things is to me irrelevant. Just compile 2 apps and they will not be able to talk natively to each other. Done deal.
>> Some tell me that multithreading is not that simple. Well nothing under the hood of any app is simple, and triply so for a development environment. My idea was for the engine to handle communications between all of it's objects the way it does now, but have concurrent processes IF YOU WANTED.
>> By default, I envision LiveCode working just the way it does now, with the OPTION to say something like:
>> open stack "Accounts Receivable" with new thread
>> do ReportGen with new thread
>> I could then check in on the state of a global from time to time in my Progress Bar modal stack or switch back to my "Order Entry" stack and continue entering my customer's order while the report generator was running. See? I personally do not have any interest whatsoever managing all the threading myself. I use LiveCode so I do not HAVE to know or understand that sort of thing. I am only one person. One of the things that LiveCode allows us to do, which is not talked about much, is to produce really nice and functional applications with incredibly minimal resources (like only one developer!)
>> On Jan 31, 2011, at 9:35 AM, form wrote:
>>> Even discounting games, I'd love to be able to designate a substack to being
>>> "threaded", disabling its access to objects in other stacks, and limiting
>>> communication to event/message passing.
>>> It would be very much like using the open process command with a Windows
>>> command line program. (WHY doesn't it work with Mac command line
>>> I use open process is a stack to start a makefile and monitor its output
>>> while keeping the interface perfectly responsive. I do the same on a mac
>>> using a shell command outputting to a text file that I sample the tail from
>>> in another shell command. Hackier, but it gets the basic job done.
>>> But if I have LiveCode that I want to start and monitor, I'm out of luck.
>>> (Without getting REALLY hacky, that is.)
>>> ~ Chris Innanen
>>> ~ Nonsanity
>>> On Mon, Jan 31, 2011 at 11:57 AM, Bob Sneidar <bobs at twft.com> wrote:
>>>> Well now that there is Livecode for iApps, a lot of people may want it, but
>>>> I for one am never going to develop a game, even a simple one.
>>>> On Jan 29, 2011, at 5:06 PM, Alejandro Tejada wrote:
>>>>> Hi All,
>>>>> It's nice to read discussions about features that
>>>>> enhance this platform, but now I have one doubt:
>>>>> How many developers (who use Livecode) want
>>>>> to see this platform converted in a game engine?
>>>>> Notice that the only DLL in my wish list for this
>>>>> platform is a SWF player, that allows to run
>>>>> movies inside a stack, just like the Quicktime
>>>>> externals. I do not want to see a Timeline
>>>>> in this platform...
>>>>> At least in my mind, you could not build (easily)
>>>>> the kind of applications created with Livecode
>>>>> if it were a game engine. Am I wrong?
>>>>> Or There are no boundaries anymore among
>>>>> Software Development tools?
>>>>> use-livecode mailing list
>>>>> use-livecode at lists.runrev.com
>>>>> Please visit this url to subscribe, unsubscribe and manage your
>>>> subscription preferences:
>>>> use-livecode mailing list
>>>> use-livecode at lists.runrev.com
>>>> Please visit this url to subscribe, unsubscribe and manage your
>>>> subscription preferences:
>>> use-livecode mailing list
>>> use-livecode at lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
More information about the Use-livecode