Eşzamansız (bilgisayar programlama) - Asynchrony (computer programming) - Wikipedia

Eşzamansız, içinde bilgisayar Programlama, ana olaydan bağımsız olayların meydana gelmesini ifade eder. program akışı ve bu tür olaylarla başa çıkmanın yolları. Bunlar, şunun gelişi gibi "dış" olaylar olabilir. sinyaller veya gerçekleşen bir program tarafından başlatılan eylemler aynı anda program yürütülmeden, program olmadan engelleme sonuçları beklemek için.[1] Eşzamansız giriş / çıkış eşzamansızlığın ikinci nedeninin bir örneğidir ve programların depolama veya ağ cihazlarına komutlar vermesine izin verirken, işlemci programı yürütmeye devam ediyor. Bunu yapmak bir derece sağlar paralellik.[1]

Zaman uyumsuzlukla başa çıkmanın yaygın bir yolu programlama arayüzü sağlamak alt programlar (yöntemler, işlevler) arayanlarına bazen bir nesne olarak adlandırılan bir nesne gelecek ya da söz, devam eden olayları temsil eder. Böyle bir nesne daha sonra tipik olarak işlem tamamlanana kadar bloke eden bir senkronizasyon işlemiyle birlikte gelir. Gibi bazı programlama dilleri Cilk, eşzamansız bir prosedür çağrısını ifade etmek için özel sözdizimine sahip olun.[2]

Eşzamansızlık örnekleri aşağıdakileri içerir:

  • Eşzamansız prosedür çağrısı, bir prosedürü aynı anda çalıştırmak için bir yöntem, İş Parçacığı.
  • "Ajax "," zaman uyumsuz "un kısaltması JavaScript ve XML ")[3][4][5] bir dizi web Geliştirme kullanılan birçok web teknolojisini kullanan teknikleri müşteri tarafı eşzamansız G / Ç oluşturmak için Web uygulamaları.
  • Eşzamansız yöntem gönderimi (AMD), sunucu tarafının çok sayıda uzun süreli istemci isteğini ele alması gerektiğinde kullanılan bir veri iletişim yöntemi.[6] Eşzamanlı yöntem gönderimi (SMD) kullanıldığında, bu senaryo sunucuyu kullanılamayan meşgul durumuna dönüşebilir ve bu da bir bağlantı talebi zaman aşımı. Bir müşteri talebinin hizmeti derhal mevcut bir müşteriye gönderilir. Konu bir iş parçacığı havuzu ve müşteri engelleme durumuna getirilir. Görevin tamamlanması üzerine, sunucu bir geri arama ile bilgilendirilir. Sunucu, istemcinin engelini kaldırır ve yanıtı istemciye geri iletir. İş parçacığı açlığı durumunda, istemciler iş parçacıklarının kullanılabilir olmasını beklerken engellenir.

Eşzamansız senaryolar

  1. G / Ç işlemleri: Örnekler şunlardır: bir ağ çağrısı yapmak, bir veritabanıyla konuşmak, bir dosyayı okumak, bir belgeyi yazdırmak, vb. Bir G / Ç işlemini gerçekleştiren eşzamanlı bir program, işlem bitene kadar duracaktır. Daha verimli bir program bunun yerine işlemi gerçekleştirir ve işlem beklerken diğer kodu yürütmeye devam eder. Bazı kullanıcı girdilerini okuyan, biraz hesaplama yapan ve sonucu e-posta yoluyla gönderen bir programınız olduğunu varsayalım. Bir e-posta gönderirken, ağa bazı veriler göndermeniz ve ardından alıcı sunucunun yanıt vermesini bekleyin. Sunucunun yanıt vermesini bekleyerek harcanan zaman, programın hesaplamaya devam etmesi durumunda çok daha faydalı olacak olan boşa harcanan zamandır.
  2. Birden çok işlemi paralel olarak gerçekleştirme: Paralel olarak farklı işlemler yapmanız gerektiğinde, örneğin bir veritabanı çağrısı, web servis çağrısı ve herhangi bir hesaplama yapmanız gerektiğinde, asenkroni kullanabiliriz.
  3. Uzun süren olay odaklı istekler: Bu, gelen bir isteğinizin olduğu ve bu olay gerçekleştiğinde başka bir olayın gerçekleşmesini bekleyerek bir süre uykuya daldığı fikirdir, isteğin devam etmesini ve ardından müşteriye bir yanıt göndermesini istersiniz. Bu durumda, istek geldiğinde, iş parçacığı bu isteğe atanır ve istek uykuya geçince iş parçacığı evre havuzuna geri gönderilir ve görev tamamlandığında olay oluşturur ve iş parçacığı havuzundan bir iş parçacığı seçer. yanıt gönderme (iş parçacığı havuzundan gönderilen ve alınan iş parçacığı aynı olabilir veya olmayabilir.[7]

Ayrıca bakınız

Referanslar

  1. ^ a b Davies, Alex (2012). C # 5.0'da zaman uyumsuz. O'Reilly. s. 1–2.
  2. ^ McCool, Michael; Reinders, James; Robison, Kemer (2013). Yapısal Paralel Programlama: Verimli Hesaplama Modelleri. Elsevier. s. 30.
  3. ^ Chris Shiflett. "Ajax Bir Kısaltma Değildir".
  4. ^ "AJAX vs Ajax - Tabii Ajax! (Arun Gupta, gidecek Miles ...)".
  5. ^ Jesse James Garrett (18 Şubat 2005). "Ajax: Web Uygulamalarına Yeni Bir Yaklaşım". AdaptivePath.com. Alındı 19 Haziran 2008.
  6. ^ AMD'nin ICE kullanımı.
  7. ^ Goel, Gaurav. "Eşzamansız ve Bekleme Eğitimi". Kod Projesi. Alındı 3 Mart, 2020.