4
$\begingroup$

Words synchronous and asynchronous can be met several times, in different contexts, when studying computer science. As an example :

  1. Synchronous and asynchronous circuits.
  2. Synchronous and asynchronous calls.
  3. Synchronous and asynchronous messages.

I never really understood the real meaning of those terms, and also the common sense that different usages of synchronous and asynchronous have.

So my question is : What does synchronous and asynchronous really mean in computer science ?

$\endgroup$
1
  • 3
    $\begingroup$ Quite often, specific adjectives mean different things in jargon, especially in (fields related to) mathematics. So, I don't think there is a 'real meaning' at all. $\endgroup$
    – Discrete lizard
    Commented Jan 23, 2018 at 21:24

1 Answer 1

7
$\begingroup$

As Discrete lizard suggests, there is not some precise CS-wide definition for these terms. Generally, you should not expect terms and notation to always mean the same thing even within a single field.

Nevertheless, a vague general statement is that in "synchronous" systems, things "wait" for other things, while in "asynchronous" systems, things don't "wait".

That said, it's probably better to split this into two broad interpretations of this. There's "synchronous" in the sense of everything moving in lock-step (i.e. everyone "waits" for the next "round" or everyone "waits" on a "clock"). This interpretation is probably the closer of the two to the colloquial notion. This applies to synchronous circuits, Bulk Synchronous Processing, and synchronous data flow. A synchronous circuit has a clock signal and it executes in time with the clock. An asynchronous circuit allows each subcomponent to execute whenever it's ready. It requires careful timing to make sure all the inputs to each subcomponent are ready when that subcomponent is ready.

The other interpretation is blocking where one thing makes a request to another thing and then sits there waiting for the response. The "waiting for the response" aspect is what is called "blocking". Synchronous calls/messages would fall under this. The alternative is to send a message and then continue on without waiting for a response. Any response is either ignored or collected in a "mailbox" to be read at some later time. This is often handled by the framework you're using which will then dispatch events to which you register.

The Ptolemy Project is a fantastic resource for in-depth thoughts on different models of computing and their notion of time.

$\endgroup$
4
  • $\begingroup$ What do you mean you shouldn't expect? Typically we all expect a word to have a common meaning, especially when it is used in the same field. Sometimes meanings can vary this is true, but its uncommon 99% of words don't vary, so it is okay to expect words to mean the same thing or what good are words?! Also Ansyncronous means that somethings Synchronicity is absolute. $\endgroup$
    – JΛYDΞV
    Commented Feb 26, 2020 at 1:31
  • $\begingroup$ @JΛYDΞV The meaning of words has always and will always depend on the context in which they are used. To say 99% of words don't vary is just plain wrong. Open a dictionary to a random page and you'll see that most words have multiple definition. $\endgroup$
    – jtb
    Commented Aug 27 at 13:47
  • 1
    $\begingroup$ @jtb I read this comment I made 4 years ago and I don't know what I was thinking. Reading it now, I completely agree with you. LOL. I'll leave the comment just to remind myself that I should be mindful when I post an opinion becuase I might be wrong, and totally disagree with myself later on. $\endgroup$
    – JΛYDΞV
    Commented Aug 28 at 18:55
  • $\begingroup$ @JΛYDΞV There's no better sign of learning than that! Props to you for the humility and growth mindset :) $\endgroup$
    – jtb
    Commented Aug 29 at 17:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.