setInterval methods every
I also have a
onblur animation event for some control.
In a case where
onblur occurs (+ animation), I might get the
So my question is:
Does Async programming mean multi-threading? (in any way?)
asked Jan 22 ’12 at 17:53
No. It means literally what it means– asynchronous. Understanding the difference between asynchronous programming and thread-based programming is critical to your success as a programmer.
In a traditional, non-threaded environment, when a function must wait on an external event (such as a network event, a keyboard or mouse event, or even a clock event), the program must wait until that event happens.
In a multi-threaded environment, many individual threads of programming are running at the same time. (Depending upon the number of CPUs and the support of the operating system, this may be literally true, or it may be an illusion created by sophisticated scheduling algorithms). For this reason, multi-threaded environments are difficult and involve issues of threads locking each other’s memory to prevent them from overrunning one another.
For this reason, event-driven, asynchronous programming avoids many of the pitfalls of traditional, multi-threaded programming, such as memory contention issues. There may still be race conditions, as the order in which events are handled is not up to you, but they’re rare and easier to manage. On the other hand, because the event handler does not deliver events until the currently running function hits an idle spot, some functions can starve the rest of the programming. This happens in Node.js, for example, when people foolishly do lots of heavy math in the server– that’s best shoved into a little server that node then “waits” to deliver the answer. Node.js is a great little switchboard for events, but anything that takes longer than 100 milliseconds should be handled in a client/server way.
answered Jan 22 ’12 at 18:05
A single threaded event loop is a good example of being asynchronous in a single threaded language.
The concept here is that you attach
doLater callback handlers to the
eventLoop. Then the
eventLoop is just a
while(true) that checks whether the specific timestamp for each
doLater handler is met, and if so it calls the handler.
This does mean that without any kind of OS thread scheduler access of your single thread, your forced to busy wait on the
If you have a
sleep call you could just do
sleep until the next
doLater handler which is more efficient then a busy wait since you deschedule your single thread and let the OS do other things.
answered Jan 22 ’12 at 18:02
Only in the sense that it executes code haphazardly and risks race conditions. You will not get any performance benefits from using timeouts and intervals.
However, HTML5’s WebWorkers do allow for real multithreading in the browser:
answered Jan 22 ’12 at 17:57
If there is a callback, something has to call it. The units of execution are threads & so, yes, some other thread has to call the callback, either directly or by queueing up some asynchronous procedure call to the initiating thread.
answered Jan 22 ’12 at 18:04
Let’s block ads! (Why?)
from My Reading List: Read and Unread https://ift.tt/2RBMC5c