Ardışıl sunucu dışında bir eşzamanlısunucu aynıanda birden fazla istemciye servis sağlamalıdır. Örneğin, bir chat sunucusu belirli bir istemciye saatlerce servis verebilir, o diğer bir istemciye servis vermek için diğerine servis vermeyi durdurmaz.
Bu akışşemamızda önemli bir değişiklik yapmamızı gerektirir:

Servis işini daemon prosesinden kendi sunucu prosesine kaydırdık. Ayrıca her çocuk proses annesinin açık dosyalarınıkullandığından (ve sokette bir dosya gibi işlem gördüğünden), yeni soket sadece accept'in tuttuğu soketi değil, accept den dönen ve ayrıca ilk çalışan en üst prosesin açtığısoketi de kullanır(miras alır).
Ayrıca sunucu prosesin bu sokete ihtiyacıyoktur ve hemen kapatmalıdır. Benzer şekilde daemonun da accept edilen sokete ihtiyacı yoktur ve kesinlikle kapatmalıdır. Kapatmazsa yakın zamanda ya da daha sonra mevcut dosya tanımlayıcısıkalmayacaktır.
Sunucu proses servisini bitirdikten sonra accept edilen soketi kapatmalıdır. Daemon prosese geri döneceğine kendini sonlandırmalıdır.
UNIX altında aslında bir proses çıkmaz. Yerine annesine döner. Tipik olarak bir anne çocuğu için bekler ve bir dönüşdeğeri elde eder. Fakat bizim daemon prosesimiz basit olarak durma ve bekleme yapamaz.
Bu bütün ek proses oluşturma amaçlarınıyenecektir. Ama eğer hiç beklemezse, çocuklar zombi olacaklardır. Fonksiyonel olmayacaklardır ama etrafta dolaşacaklardır. Bu sebeple daemon prosesi daemon olmaya başlarken sinyal tutucularınıayarlamalıdır. En azından SIGCHLD işlenmelidir. Dolayısıyla daemon zombiden dönen değerleri sistemden atabilir ve zombilerin kullandıklarısistem kaynaklarını bırakabilir.
Akışşemasında signals kutusunu kullanmamızın nedeni budur. Aklıma gelmişken, bazısunucular ayrıca SIGHUP'ıişlerler ve tipik olarak konfigürasyon dosyalarınıtekrar okumalarıiçin superuser'dan gelen sinyal olarak yorumlanır. Bu bize sunucularıöldürüp yeniden başlatmaksızın ayarlarıdeğiştirme imkanısağlar.