Jeff Massung wrote:

That said, there are areas where LiveCode could - itself - benefit from
multi-threading that isn't exposed to the end user. One example of this is
in access to the internet, file, or various OS accesses. Being able to issue
a large disk read/write and get a callback when done, and either a revamp or
serious bug fix/cleaning of libURL. Or being able to wait on a particular
event to be completed/happen. These alone would help considerably.

One small step in that direction, from the LiveCode 4.5 Release Notes.pdf (which is unfortunately buried deep inside the app bundle on OS X virtually guaranteeing no Mac customer will ever see it):


  Engine changes

  Non-blocking DNS resolution

  The open socket command no longer blocks on DNS resolution.
  Instead, if resolution is required the command will return
  immediately and the DNS lookup will happen in the background.
  If resolution fails, then a socketError message is sent in
  the same was as if connection fails.

  For applications using hostNameToAddress directly, its syntax
  has been augmented:
  hostnameToAddress(hostname, [ callback ])
  If the callback parameter is specified then the call will
  return immediately and upon completion of the lookup, the
  callback will be invoked with the resolved address as a
  parameter.


Another nifty new thing including in that unfortunately hidden document is:

  Slave process improvements

  A number of issues with the open process command and the engine
  itself have, up until now, conspired to make it difficult (if
  not impossible!) to either run a slave process, or use the
  engine as slave on all platforms.

  These issues have been resolved in this version, thus making it
  straightforward to run another process and poll for input and
  output over stdin/stdout.

  The typical form for this is along the following lines:

  local sSlaveProcess
  command startSlave pProcess
     open process sSlaveProcess for text update
     send “monitorSlave” to me in 50 millisecs
  end startSlave

  command monitorSlave
    repeat forever
      # Loop until there are no more lines to read.
      read from process sSlaveProcess for 1 line in 0 millisecs
      if the result is empty then
        # The slave has sent us something, so process it and loop for
        # (potentially) more data. else if the result is “timeout” then
        # There is nothing waiting for us, so exit repeat
        exit repeat
      else if the result is “eof” then
        # The slave has terminated, so do any final processing and
        # finish monitoring.
        close process sSlaveProcess
        exit monitorSlave
      else
        # Some error has occurred!
        exit monitorSlave
     end if
    end repeat
    send “monitorSlave” to me in 50 millisecs
  end monitorSlave

--
 Richard Gaskin
 Fourth World
 LiveCode training and consulting: http://www.fourthworld.com
 Webzine for LiveCode developers: http://www.LiveCodeJournal.com
 LiveCode Journal blog: http://LiveCodejournal.com/blog.irv

_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to