I’ve seen a lot of other developers refer to threads in ActionScript functions. As a newbie I have no idea what they are referring to so:
What is a thread in this sense?
How would I run more than one thread at a time?
How do I ensure that I am only running one thread at a time?
Thanks
~mike
Threads represent a way to have a program appear to perform several jobs concurrently. Although whether or not the jobs can actually occur simultaneously is dependent on several factors (most importantly, whether the CPU the program is running on has multiple cores available to do the work). Threads are useful because they allow work to be done in one context without interfering with another context.
An example will help to illustrate why this is important. Suppose that you have a program which fetches the list of everyone in the phone book whose name matches some string. When people click the “search” button, it will trigger a costly and time-consuming search, which might not complete for a few seconds.
If you have only a single-threaded execution model, the UI will hang and be unresponsive until the search completes. Your program has no choice but to wait for the results to finish.
But if you have several threads, you can offload the search operation to a different thread, and then have a callback — a trigger which is invoked when the work is completed — to let you know that things are ready. This frees up the UI and allows it to continue to respond to events.
Unfortunately, because ActionScript’s execution model doesn’t support threads natively, it’s not possible to get true threading. There is a rough approximation called “green threads”, which are threads that are controlled by an execution context or virtual machine rather than a larger operating system, which is how it’s usually done. Several people have taken a stab at it, although I can’t say how widespread their usage is. You can read more at Alex Harui’s blog here and see an example of green threads for ActionScript here.