În știința computerelor, concurrency este executarea mai multor secvențe de instrucțiuni în același timp. Într-un sistem de operare aceasta se întâmplă atunci când mai multe fire de proces rulează în paralel. Aceste fire pot comunica între ele fie prin memorie partajată, fie prin transmiterea mesajului.
Distribuția este o formă de concurrency în care toată comunicarea dintre firele simultane se face exclusiv prin trecerea mesajului. Distribuția este utilă deoarece utilizează o scalare mai ușoară a consumului de resurse, care economisește aceste resurse. În timp ce concurența de memorie partajată necesită adesea un singur procesor pe fir, distribuția permite mai multor fire să coexiste și să comunice între ele.
Concurrency este, de asemenea, o filozofie de design de programare. În programarea concurentă, programatorii încearcă să descompună o problemă complexă în mai multe procese simultane de executare care pot fi abordate individual. Deși programele concurente oferă o structură de programe mai bună decât programarea secvențială, nu este întotdeauna mai practică. Într-un sistem concurent, calculul executat în același timp poate să difere, oferind răspunsuri nedeterminate. Sistemul se poate termina într-un blocaj dacă maximele bine definite nu sunt atribuite pentru consumul de resurse al fiecărui fir de execuție. Astfel, pentru a proiecta o concurrency robustă într-un sistem de operare, un programator trebuie atât să reducă o problemă în sarcini individuale, paralele, cât și să coordoneze execuția, alocarea memoriei și schimbul de date al acelor sarcini.