Geoff (btw, Jeff here ;-)),

Okay, I think I completely understand where the disconnect lies - and it's with 
my understanding of the LC internals. I put together a very simple stack that's 
nothing more than a field "Test" and a button. The button script looks like 
this:

on mouseUp
   putNumbers
   putLetters
end mouseUp

command putNumbers
   repeat with i = 1 to 26
      put i & cr after fld "Test" 
      wait 0 ticks with messages
   end repeat
end putNumbers

command putLetters
   repeat for each char x in "abcdefghijklmnopqrstuvwxyz"
      put x & cr after fld "Test"
      wait 0 ticks with messages
   end repeat
end putLetters


Now, if LC essentially already had coroutines, when done, the output in the 
field should be something like "1a2b3c..." (with newlines of course). However, 
that's not what's in the field. Instead the output is "123456...abcdef..." This 
is likely what you were alluding to and I wasn't getting, and this puts an 
entirely different face on the conversation.

The issue isn't coroutines vs. whatever so much as LC doesn't actually allow 
(from what I can tell) for multiple execution contexts. Coroutines - obviously 
- is one method of achieving this goal, and I would agree that it is a 
preferred solution.

I hope the test above puts this discussion to rest and is a hint to the Rev 
team on a direction they can take.

Now, not to be pedantic, but your last paragraph didn't really make much sense 
[to me]. Coroutines - since they must yield and don't run in parallel - are are 
still single-threaded. This means that you could run 100 contexts on 100 HW 
threads, and your program will run at exactly the same speed as if they were on 
1 HW thread (this assumes that the OS isn't hyperthreading your application 
with others).

Anyway, yes, coroutines is one very nice way of achieving "parallelism" is LC 
w/o needing locks. However, I still think LC needs pre-emption in at least a 
basic form (like my example of forcing a coroutine to become live every so 
often).

Cheers, and hope you are having a good weekend!

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

Reply via email to