Programy mogą charakteryzować się wyłącznie równoległością, wyłącznie współbieżnością, zarówno równoległością, jak i współbieżnością, a także żadnym z nich. Wielowątkowość i wieloprzetwarzanie (współdzielone zasoby systemowe) Synchronizacja (koordynacja dostępu do zasobów współdzielonych) Koordynacja (zarządzanie interakcjami między zadaniami współbieżnymi) Kontrola współbieżności (zapewnienie spójności i integralności danych) Komunikacja międzyprocesowa (IPC, ułatwiająca wymianę informacji)

Problemy Ponieważ obliczenia w systemie współbieżnym mogą oddziaływać na siebie nawzajem podczas wykonywania, liczba możliwych ścieżek wykonania w systemie może być niezwykle duża, a jego wynikowe działanie może być nieokreślone. Współbieżne korzystanie ze współdzielonych zasobów może być źródłem nieokreśloności, prowadząc do problemów takich jak impas czy niedobór zasobów.

Projektowanie systemów współbieżnych często wiąże się ze znalezieniem niezawodnych technik koordynacji ich wykonywania, wymiany danych, przydzielania pamięci i utworzenia harmonogramu wykonywania w celu zminimalizowania czasu reakcji i zmaksymalizowania przepustowości.