Buraya iki kavramdan oldukça rahat geldim, ama onlar hakkında net olmayan bir şeyle geldim.
Bazı cevapları okuduktan sonra, farkı tanımlamak için doğru ve yararlı bir metaforum olduğunu düşünüyorum.
Bireysel kod satırlarınızı ayrı ancak sıralı oyun kartları olarak düşünüyorsanız (eski okul kartlarının nasıl çalıştığını açıklıyorsam beni durdurun), o zaman yazılan her ayrı prosedür için benzersiz bir kart yığınınız olacaktır ( kopyala ve yapıştır!) ve kodu normal olarak ve eşzamansız olarak çalıştırdığınızda normalde olup bitenler arasındaki fark, ilgilenip ilgilenmemenize bağlıdır.
Kodu çalıştırdığınızda, işletim sistemine, işlemciye iletilmek üzere bir dizi tek işlem (derleyicinizin veya yorumcunuzun "daha yüksek" seviye kodunuzu kırdığı) verirsiniz. Bir işlemci ile aynı anda yalnızca bir kod satırı yürütülebilir. Dolayısıyla, aynı anda birden çok işlem yürütme yanılsamasını gerçekleştirmek için, işletim sistemi, işlemciye belirli bir işlemden yalnızca birkaç satır gönderdiği ve tüm işlemler arasında nasıl göründüğüne göre geçiş yaptığı bir teknik kullanır. Uygun. Sonuç, aynı anda görünen son kullanıcıya ilerleme gösteren birden fazla işlemdir.
Metaforumuz için ilişki, işletim sisteminin kartları işlemciye göndermeden önce her zaman karıştırmasıdır. Kart desteniz başka bir desteye bağlı değilse, başka bir destenin aktif olduğu sırada destenizin seçilmeyi bıraktığını fark etmezsiniz. Bu yüzden umursamıyorsanız, önemli değil.
Bununla birlikte, ilgileniyorsanız (örneğin, birbirine bağlı birden fazla işlem - veya kart destesi varsa), işletim sisteminin karıştırılması sonuçlarınızı berbat edecektir.
Eşzamansız kod yazmak, siparişin ne olduğuna bakmaksızın yürütme sırası arasındaki bağımlılıkların işlenmesini gerektirir. Bu yüzden "geri arama" gibi yapılar kullanılır. İşlemciye "yapılacak bir sonraki şey diğer yığına ne yaptığımızı anlatmak" diyorlar. Bu tür araçları kullanarak, diğer yığının işletim sisteminin talimatlarını daha fazla çalıştırmasına izin vermeden önce bildirim aldığından emin olabilirsiniz. ("Called_back == false: send (no_operation)" - bunun gerçekten nasıl uygulandığından emin değilim, ama mantıklı olarak, tutarlı olduğunu düşünüyorum.)
Paralel süreçler için fark, birbirinizi umursamayan iki yığının ve bunları işlemek için iki işçinin olmasıdır. Günün sonunda, iki yığının sonuçlarını birleştirmeniz gerekebilir, bu da eşzamanlılık meselesi olacaktır, ancak yürütme için tekrar umursamıyorsunuz.
Bu yardımcı olur emin değilim, ama her zaman birden fazla açıklama yararlı bulabilirsiniz. Ayrıca, eşzamansız yürütmenin tek bir bilgisayar ve işlemcileri ile sınırlı olmadığını unutmayın. Genel olarak konuşursak, zamanla ya da (daha genel olarak konuşursak) olaylarla ilgilenir. Bu nedenle, A düğümünü X ve onun bağlı B yığınını Y'ye bağımlı yığın A gönderirseniz, doğru asenkron kod durumu dizüstü bilgisayarınızda yerel olarak çalışıyormuş gibi hesaplayabilmelidir.