What is asynchronous?
In general, asynchronous -- from Greek asyn- ("not with/together") and chronos ("time") -- describes objects or events not coordinated in time.
In IT, asynchronous describes the relationship between two or more objects or events that interact within the same system, but do not occur at predetermined intervals or necessarily rely on each other's existence to function. These events are not coordinated with each other, so they can occur simultaneously, but do not have to because they have their own separate agenda.
Asynchronous vs. synchronous
Communication becomes asynchronous when the medium used to communicate becomes complex enough that it can process and store communicated information over time. This enables participants to communicate along more than one thread without reliance on a linear structure.
Many technologies have both synchronous and asynchronous methods. In fact, many communication tools are inherently synchronous. A conversation between two people, in its most basic incarnation, is reliant on the call and response of the two participants in chronological order.
JavaScript is another example of a mode of communication that is inherently synchronous. However, modifications have made it asynchronous, enabling programs to effectively multitask and make programmers' lives easier.
Uses of asynchronous
Asynchronous is a broad term and has many applications. Because the term casts such a wide net, it can be difficult to reconcile its general definition when comparing its various applied uses. In IT alone, there are several different applications. In most IT contexts, asynchronous refers to a style of communication that occurs both between people and between technological components.
One simple way to understand asynchronous is through the lens of personal communication. Emails or texts are examples of asynchronous communication because they don't have to be coordinated in time. Each event or sent message can happen at irregular intervals because the information is stored for whenever the recipient chooses to access it. Events happen independent of each other and have no fixed agenda.
Contrast this against in-person conversations and video conferencing. These are synchronous communication methods, because the events, or turns in conversation, need to happen in order and over a fixed span of time -- the amount of time that participants are engaged in the conversation. The events are dependent on each other and build on top of one another in a linear fashion.
The bottom line is: In synchronous personal communications, recipients must respond immediately; in asynchronous, they can respond at their convenience. This general model applies to most asynchronous contexts. The only variables are the units of information -- referred to as objects or events -- and the medium used to communicate them.
Some prominent examples of the term's use are in the following:
- Computer programming, in which the program communicates with the computer.
- Telecommunication, in which signals transmit at certain rates and affect the quality of the information they contain based on those rates.
Asynchronous telecommunication
In telecommunication signaling -- either within or between networks -- an asynchronous signal transmits at a different clock rate than another signal. Plesiochronous signals are almost but not quite in synchronization, and there is a method to adjust them. Synchronous signals run at the same clock rate.
An example of asynchronous signals in telecommunication is clarity of transmission. When using devices such as radios or telephones, transmission clarity is critical. Transmission clarity requires the exchanged data to be processed by both parties in phase with each other according to a shared rate. When this is done using a centralized clock, it is a synchronous transmission.
However, it can be an asynchronous process as well. Asynchronous transfer mode (ATM) is a protocol that enables asynchronous data transmission without the signals having to pass through a mainframe or centralized clock. Instead, ATM establishes a pathway through the network for the data and assigns it a traffic contract that ensures data processes according to an agreement made between the client and the network. This can guarantee a constant bit rate for telephone calls, ensuring a caller's voice is not cut off or delayed.
Asynchronous computer programming
In computer programming, asynchronous operation means that a process operates independent of other processes. Synchronous operation means that the process runs only as a result of some other completed or handed-off processes.
File transmission from one file to another might use synchronous protocols. As one point receives the transmission, it returns a response indicating success or the need to resend. Each successive data transmission requires a response to the previous transmission before initiating a new one.
One tangible example of a program operating asynchronously is a printer's embedded software. When a printer sends out a low toner alert to the user, it continues to print. The printer does not stop everything to issue the alert and then resume. The part of the program that issues the alert is not dependent on the part that triggers printing. They can occur simultaneously because they function independently.
A more abstract example is using asynchronous methods in common programming languages, such as JavaScript, Python and C#. Also known as nonblocking code, asynchronous programming provides opportunities for programs to run other code while waiting for a long-running task to complete. The program executes the time-consuming task in the background while the rest of the code continues to execute.
The feature that enables asynchronous programming in these languages is referred to as a callback function. JavaScript sends all operations nested in the function to a web application or database. There, it gathers necessary information while the rest of the program continues running. After gathering all information, it is sent back through the program and applied to the functions that rely on it, hence callback.
Asynchronous workplace communication
Asynchronous also describes a growing trend in workplace communication. Employees use applications known as team collaboration tools to have conversations unbound by a linear format. Participants don't need to wait for responses to carry out the conversation.
This format of communication increases flexibility, enabling participants to engage with each other without time- and location-based restraints. Instead of having an in-person conversation -- an event that requires both parties to be present in real time and volleying responses -- participants can use team collaboration tools to communicate remotely on their own time.
Some examples of collaboration tools include applications such as Slack, Microsoft Teams and Jira. Features that enable teams to coordinate workflows without needing each member to be present to participate in the immediate conversation include the following:
- File sharing.
- Online whiteboards.
- Chat.
As a result, employees remain connected without being bound by the time-based nature of a conversation. Employees in different time zones can participate as effectively as in-office employees in this asynchronous framework.
Benefits and drawbacks
The benefits of an asynchronous communication format are the following:
- Increased flexibility in the structure of information exchange.
- Freedom from reliance on a universal time scale or logic for conversations.
The main drawback of the asynchronous feature is it can introduce a layer of complexity to communication that can complicate or even sabotage the exchange of information.
These benefits and drawbacks manifest in asynchronous computer code. Coding an excess of callback functions can get messy and become a nightmare for programmers attempting to analyze them. Syntactic features such as promises and async/await patterns streamline code syntax and ease the experience of reading it for programmers. Still, these features add a layer of complexity to the code.
Synchronous is the better choice if the program's sole purpose is to run simple, sequential tasks. Data processing, for example, tolerates the stop-and-wait aspect of synchronous programming. Asynchronous code is more suitable to programs that need to respond to events, such as a graphical user interface.
Asynchronous benefits and drawbacks also manifest in the use of team collaboration tools. In addition to the flexibility they provide employees, team collaboration tools provide a record of all shared communications that employees can reference later. Employees also have time to think through responses because immediate responses aren't required.
However, if used in a disorganized manner, these tools can perpetuate muddled conversation. Because users can make comments and contributions anytime and anywhere, business conversations can easily be led astray through excess feedback. Also, the responsibility is on the user to stay engaged in multiple conversation threads. Failure to remain engaged or forgetting about threads can lead to a lack of transparency, negatively affecting employees whose work depends on others.
Editor's note: This definition was updated to reflect industry changes and improve the reader experience.