Jak to chápu:
(a)synchronní znamená, že nějaké dvě věci spolu jsou nebo nejsou sesynchronizovány. Takže když mám dvě zavolání funkcí, jedna zpracovává svůj výsledek déle než druhá, tak není přihlíženo na pořadí volání, ale na délku vykonávání té funkce.
(ne)blokující znamená, že jedna věc (ne)blokuje jinou. Například zavolám první funkci, a hned mohu volat druhou a nemusím čekat na výsledek, protože ten výsledek se mi zpět dopraví jiným způsobem (callbackem).
paralelní znamená, že dvě funkce se vykonávají ve stejný čas (reálně, na více jádrech, ale platí to i když to je jen iluzojní pomocí multitaskingu).
Vychází mi z toho, že často se děje kombinace neblokující asynchronní volání funkce, a když jich zavolám více, tak budou spolu běžet paralelně. Ale neimplikuje to nutnost. Klidně můžu zavolat dvě funkce neblokujíce (s callbackem), oni se mi na sobě nezávisle zavolají (to znamená, že nemám zaručeno, která se spustí první), ale z nějakého implementačního důvodu (
http://devel.cz/otazka/async-immutable) se spustí za sebou - takže nejsou paralelní.
Stejně tak bych, když bych se hodně snažil, určitě našel i případ, kdy budu mět asynchronní, blokující, neparalelní...
Správně?