Eşzamanlılık, paralellik ve asenkron yöntemler arasındaki fark nedir?


177

Eşzamanlılık, iki iş parçacığının ayrı iş parçacıkları üzerinde paralel olarak yürütülmesini sağlar. Ancak, asenkron yöntemler paralel fakat aynı 1 iş parçacığında çalışır. Bu nasıl başarılır? Ayrıca, paralellik hakkında ne dersiniz?

Bu 3 kavram arasındaki farklar nelerdir?


8
"Asenkron" terimi birçok farklı anlama gelebilir. Bu terimler birbiriyle ilişkilidir, ancak ayrık şeyleri tanımlamazlar. Anlamlar üst üste biner ve duruma göre değişir.
Sivri

2
İlk eşzamanlılık aynı anda iki veya daha fazla işlem yürütüyor. Bu yoldan çıkarken, eşzamanlı olmak paralel olmak değildir. Paralel süreçler iki veya daha fazla çekirdek gerektirirken, eşzamanlı işlemler tek bir çekirdeği zamanla paylaşabilir.
Rick O'Shea

Yanıtlar:


139

Eşzamanlı ve paralel, doğru bir şekilde tahmin ettiğinizle aynı prensiptir, her ikisi de aynı anda yürütülen görevlerle ilgilidir, ancak paralel görevlerin gerçekten çok görevli olması gerektiğini, "aynı anda" yapılması gerektiğini söylerken, eşzamanlı olarak görevlerin paralel olarak yürütülmeye devam ederken yürütme iş parçacığı.

Eşzamansız yöntemler doğrudan önceki iki kavramla ilgili değildir, eşzamanlı veya paralel görev izlenimi sunmak için eşzamansızlık kullanılır, ancak geçerli uygulamadan uzakta çalışması gereken bir işlem için normalde etkin bir eşzamansız yöntem çağrısı kullanılır ve Beklemek ve yanıt bekleyen uygulamalarımızı engellemek istemiyorum.

Örneğin, bir veritabanından veri almak zaman alabilir, ancak verileri bekleyen kullanıcı arayüzümüzü engellemek istemiyoruz. Zaman uyumsuz çağrı geri arama referansı alır ve istek uzak sisteme yerleştirilir getirilmez yürütmeyi kodunuza geri döndürür. Uzak sistem gerekli işlemleri gerçekleştirirken kullanıcı arabiriminiz kullanıcıya yanıt vermeye devam edebilir, verileri geri arama yönteminize döndürdüğünde, bu yöntem kullanıcı arabirimini uygun şekilde güncelleyebilir (veya bu güncelleştirmeyi teslim edebilir).

Kullanıcı bakış açısından, çoklu görev gibi görünür, ancak olmayabilir.


DÜZENLE

Muhtemelen birçok uygulamada eşzamansız bir yöntem çağrısının bir iş parçacığının bükülmesine neden olacağını eklemeye değer, ancak bu gerekli değildir, gerçekten yürütülen işleme ve yanıtın sisteme nasıl bildirilebileceğine bağlıdır.


34
İlk paragrafınızda paralellik ve eşzamanlılık olduğunu iddia ediyorum. Eşzamanlılık, paralelliğin daha spesifik olarak, birden çok yürütme iş parçacığının aynı anda yürütülmesi için birden çok yürütme iş parçacığının yönetilmesini ifade eder. Eşzamanlılık, paralellik içerebilen daha geniş bir terimdir.
Mark H

7
İki kelime birbirine çok benzer ve karıştırılabilir (ve çoğu zaman da öyledir) olsa da, farklı tanımları vardır: Eşzamanlı = Mevcut, gerçekleşen veya aynı zamanda yapılır. Paralel = aynı veya farklı cihazlar tarafından aynı anda birden fazla işlemin görünür veya gerçek performansı ile ilgili veya bu performansla ilgili. Gördüğünüz gibi paralel mutlaka eşzamanlı anlamına gelmez, sadece eşzamanlı gibi görünebilir. Günün sonunda, kelimeler genellikle birbirinin yerine kullanılır ve n dev ile muhtemelen n + 1 tanımları alırsınız ;)
Lazarus

3
@Mehrdad Sözlük kelimelerinin tanımlarını pazarlama materyallerindeki kullanımlarına dayandıracaksanız, kendinizi bir dezavantajda bulabileceğinizi düşünüyorum.
Lazarus

6
Yanlış. Programlama bağlamında, eşzamanlılık Kodunuzun yeteneği mantığının bit içine "oluşan" edilecek olabilir aynı anda çalıştırılabilir. Paralellik (eşzamanlılık ile birleştirildiğinde) söz konusu kodu alıp 100 çekirdekli bir makinede çalıştırıyor.
Frank Radocaj

2
@FrankRadocaj doğru. Eşzamanlı olarak, programın herhangi bir sırada çalıştırılabilen ve belirli bir sonuca sahip olabilen birimlere (esas olarak parçacıklar olan) bölünebileceği anlamına gelir. Paralel, bu birimlerin / iş parçacıklarının aynı anda birden fazla işlemcide çalıştırıldığı anlamına gelir.

89

Kısacası,

Eşzamanlılık, çakışan zaman periyotlarında, belirli bir sırada olmadan başlayan, çalışan ve tamamlanan birden fazla görev anlamına gelir. Paralellik, birden fazla görevin VEYA benzersiz bir görevin birkaç parçasının aynı anda tam anlamıyla, örneğin çok çekirdekli bir işlemcide çalıştığı zamandır.

Eşzamanlılık ve paralellik aynı şey DEĞİLDİR.

Eşzamanlılık ile paralellik arasındaki farklar

Şimdi eşzamanlılık ve paralellik arasındaki dikkate değer farklılıkları listeleyelim.

Eşzamanlılık, iki görevin çakışan zaman periyotlarında başlayabildiği, çalışabildiği ve tamamlanabildiği zamandır. Paralellik, görevlerin tam anlamıyla aynı anda çalıştığı zamandır. çok çekirdekli bir işlemcide.

Eşzamanlılık, bağımsız olarak yürütme süreçlerinin bileşimidir; paralellik ise (muhtemelen ilişkili) hesaplamaların eşzamanlı yürütmesidir.

Eşzamanlılık, aynı anda birçok şeyle uğraşmakla ilgilidir. Paralellik, aynı anda birçok şey yapmakla ilgilidir.

Bir uygulama eşzamanlı olabilir - ancak paralel değil, yani aynı anda birden fazla görevi işlediği anlamına gelir, ancak aynı anda iki görev yürütülmez.

Bir uygulama paralel olabilir, ancak eşzamanlı olmayabilir, yani çok çekirdekli CPU'da bir görevin birden çok alt görevini aynı anda işler.

Bir uygulama ne paralel ne de eşzamanlı olabilir, yani tüm görevleri sırayla tek tek işler.

Bir uygulama hem paralel hem de eşzamanlı olabilir, yani çok çekirdekli CPU'da aynı anda birden çok görevi aynı anda işler.

eşzamanlılık

Eşzamanlılık, en az iki veya daha fazla görevden bahsederken geçerlidir. Bir uygulama iki görevi aynı anda gerçekleştirebiliyorsa, buna eşzamanlı uygulama diyoruz. Her ne kadar burada görevler eşzamanlı gibi görünüyor, ama aslında olmayabilir. Her bir görevin görevinin bir bölümünü çalıştırdığı ve daha sonra bekleme durumuna geçtiği işletim sisteminin CPU zaman dilimleme özelliğinden yararlanırlar. İlk görev bekleme durumundayken CPU, görevin bir bölümünü tamamlamak için ikinci göreve atanır.

Bu nedenle, görevlerin önceliğine dayalı işletim sistemi, CPU ve diğer bilgi işlem kaynaklarını, örneğin bellek; tüm görevlere sırayla ve tamamlama şansı verin. Son kullanıcı olarak, tüm görevlerin paralel çalıştığı görülüyor. Buna eşzamanlılık denir.

paralellik

Paralellik iki görev olmasını gerektirmez. Her göreve veya alt göreve bir çekirdek atayarak, tam anlamıyla fiziksel olarak görevlerin bölümlerini VEYA birden fazla görevi, aynı zamanda CPU'nun çok çekirdekli altyapısını kullanarak çalıştırır.

Paralellik, esasen birden fazla işlem birimine sahip donanım gerektirir. Tek çekirdekli CPU'da eşzamanlılık elde edebilirsiniz, ancak paralellik DEĞİL.

Asenkron yöntemler

Bu, Eşzamanlılık ve paralellik ile ilgili değildir, eşzamanlı veya paralel görev izlenimi sunmak için eşzamansızlık kullanılır, ancak geçerli uygulamadan uzakta çalışması gereken bir işlem için normalde etkin bir eşzamansız yöntem çağrısı kullanılır ve biz istemiyoruz bekleyin ve yanıt bekleyen başvurumuzu engelleyin.


2
Çok yararlı. Teşekkürler
Neha

Async ve eşzamanlılık konusunda hala kafam karıştı. "Görevleri eşzamansız olarak çalıştırma" ve "görevleri eşzamanlı olarak çalıştırma" ifadesinin kullanıldığını gördüm. Görevleri eşzamansız ve eşzamanlı olarak çalıştırmak aynı anlama mı geliyor?
Moondra

1
@Moondra Async görevi tek bir iş parçacığında çalışır, çoklu iş parçacığıyla ilgili değildir. zaman uyumsuz görev, uygulamanızın dışındaki harici bir işleme bir görev gönderir ... yani veritabanı, dosya okuyucu ... bunlar IO süreçleridir, daha sonra IO işlemi bittiğinde bir eylem gerçekleştirmek için işleme bir geri çağrı eklenir. ne emin değilim zaman uyumsuz bir görev çağırdığınızda ayrı bir yeni iş parçacığı oluşturur bazı programlama dilinde bazı "zaman uyumsuz" özellikleri vardır, ben C # biridir duydum ama bu konuda emin değilim
Tobi Owolawi

56

Eşzamanlılık , her bir görevin birbiri ardına ardışık olarak yürütülmesi yerine, birden fazla görevin yürütülmesinin aralıklı olarak bırakılmasıdır.

Paralellik , bu görevlerin aslında paralel olarak yürütüldüğü zamandır.

resim açıklamasını buraya girin


Asenkron , ayrı bir kavramdır (bazı bağlamlarda ilişkili olsa da). Bir olayın başka bir olaya göre farklı bir zamanda (senkronize değil) gerçekleşmesi anlamına gelir. Aşağıdaki şemalar, aktörlerin farklı iş parçacıklarına, işlemlere ve hatta sunuculara karşılık gelebileceği bir eşzamanlı ve eşzamansız yürütme arasındaki farkın ne olduğunu göstermektedir.

resim açıklamasını buraya girin

resim açıklamasını buraya girin


6
Basit, etkili illüstrasyon.
contactmatt

1
eşzamanlılık eşzamansızlıkla aynı mıdır?
nos

1
Bu 2 kavram çok yakın, ama aynı değil. Uygulamada, eşzamansızlık, eylemler arasındaki etkileşim ile daha fazla ilişkilidir (örneğin A & B), burada bir (B) diğeri tarafından tetiklenir (A) ve ikincisinin tamamlanması için ilkini bekleyip bekleyemeyeceği. Eşzamanlılık, birbirleriyle ilgisiz olabilen eylemler ve bunların sırayla yürütülüp yürütülmediği veya yürütme işlemlerinin aralıklı olup olmadığı için daha genel bir terimdir.
Dimos

1
Yani zaman uyumsuzluk çoğunlukla engelleme ve engellememe ile ilgilidir
Daniel

15

Herkes eşzamansızlık veya eşzamanlılık ile eşzamansız ilişkilendirmede sorun yaşıyor çünkü eşzamansız paralel veya eşzamanlı bir zıtlık değildir. Senkron bir zıtlıktır. Bu sadece bir şey, bu durumda evreler başka bir şey, bu durumda başka bir evre ile senkronize olup olmayacağını gösterir.


13

Eşzamanlılığın meydana gelebileceği birkaç senaryo vardır:

Eşzamansız - Bu, programınızın engellemeyen işlemler gerçekleştirdiği anlamına gelir. Örneğin, HTTP aracılığıyla uzak bir kaynak için bir istek başlatabilir ve ardından yanıtın alınmasını beklerken başka bir görev yapmaya devam edebilir. Bu, bir e-posta gönderdiğinizde ve daha sonra yanıt beklemeden hayatınıza devam ettiğinizde olduğu gibidir.

Paralellik - Bu, programınızın her biri ayrı bir çekirdekte yürütülen görevlere ayrılarak görevleri aynı anda yürütmek için çok çekirdekli makinelerin donanımından yararlandığı anlamına gelir. Biraz duşta şarkı söylemek gibi: aslında aynı anda iki şey yapıyorsunuz.

Çoklu iş parçacığı - Bu, farklı iş parçacıklarının aynı anda yürütülmesini sağlayan bir yazılım uygulamasıdır. Çok iş parçacıklı bir program, tek çekirdekli bir makinede çalışıyor olsa bile aynı anda birkaç şey yapıyor gibi görünüyor. Bu biraz farklı IM pencereleri üzerinden farklı insanlarla sohbet gibi; aslında ileri geri geçiş yapmanıza rağmen, net sonuç aynı anda birden fazla görüşme yapmanızdır.


Bunlar gerçekten iyi benzetmeler! Teşekkürler. Birden çok iş parçacığı tanımınızla eşzamanlılığın tanımlanabileceğini söylemek adil olur mu? Yani concurrency = aynı anda gerçekleşiyor gibi görünen tek bir çekirdeğe çoklu iş parçacığı oluşturma, ancak gerçekten hızlı bir şekilde ileri geri dönüyor mu?
wongz

3

eşzamanlılık

Eşzamanlılık, bir uygulamanın aynı anda (aynı anda) birden fazla görevde ilerleme kaydettiği anlamına gelir. Bilgisayarın yalnızca bir CPU'su varsa, uygulama aynı anda birden fazla görevde ilerleme kaydedemeyebilir, ancak uygulama içinde aynı anda birden fazla görev işleniyor. Bir görevi diğerine başlamadan önce tamamlamaz.

paralellik

Paralellik, bir uygulamanın görevlerini paralel olarak işlenebilen daha küçük alt görevlere ayırdığı anlamına gelir; örneğin, aynı anda birden fazla CPU üzerinde.

Eşzamanlılık ve Paralellik Ayrıntılı Olarak

Gördüğünüz gibi, eşzamanlılık, bir uygulamanın üzerinde çalıştığı birden çok görevi nasıl ele aldığı ile ilgilidir. Bir uygulama bir görevi aynı anda (sırayla) işleyebilir veya aynı anda (aynı anda) birden fazla görev üzerinde çalışabilir.

Öte yandan paralellik, bir uygulamanın her bir görevi nasıl ele aldığı ile ilgilidir. Bir uygulama görevi baştan sona seri olarak işleyebilir veya görevi paralel olarak tamamlanabilen alt görevlere bölebilir.

Gördüğünüz gibi, bir uygulama eşzamanlı olabilir, ancak paralel olmayabilir. Bu, aynı anda birden fazla görevi işlediği, ancak görevlerin alt görevlere bölünmediği anlamına gelir.

Bir uygulama aynı zamanda paralel olabilir ancak eşzamanlı olmayabilir. Bu, uygulamanın aynı anda yalnızca bir görev üzerinde çalıştığı ve bu görevin paralel olarak işlenebilen alt görevlere ayrıldığı anlamına gelir.

Ayrıca, bir uygulama eşzamanlı veya paralel olamaz. Bu, her seferinde yalnızca bir görev üzerinde çalıştığı ve görev asla paralel yürütme için alt görevlere bölünmediği anlamına gelir.

Son olarak, bir uygulama hem eşzamanlı hem de paralel olabilir, çünkü her ikisi de aynı anda birden fazla görev üzerinde çalışır ve aynı zamanda her görevi paralel yürütme için alt görevlere böler. Bununla birlikte, bilgisayardaki CPU'lar eşzamanlılık veya paralellik ile makul derecede meşgul tutulduğundan, eşzamanlılık ve paralelliğin bazı faydaları bu senaryoda kaybolabilir. Bunu birleştirmek sadece küçük bir performans kazancına veya hatta performans kaybına yol açabilir. Eşzamanlı bir paralel modeli körü körüne benimsemeden önce analiz ettiğinizden ve ölçtüğünüzden emin olun.

Http://tutorials.jenkov.com/java-concurrency/concurrency-vs-parallelism.html adresinden


3

Paralel:Bu, iki kod parçasının "aynı anda" yürüttüğü anlamına gelen geniş bir terimdir. "Gerçek" paralelliğin mi yoksa akıllıca bir tasarım modelinden mi sahte olduğu önemli değil. Mesele şu ki, "görevleri" aynı anda başlatabilir ve daha sonra ayrı ayrı kontrol edebilirsiniz (mutex ve tüm uygun numaralarla). Ancak genellikle "paralel" kelimesini yalnızca "gerçek" paralellik için kullanmayı tercih edersiniz, çünkü: işbirlikçi olmayan çoklu görev yoluyla (CPU / GPU çekirdekleri olsun ya da işletim sisteminin yönetmesine izin vererek yazılım düzeyinde olsun) çok düşük bir seviyede). İnsanlar, örneğin bir tarayıcı penceresinin javascriptinde bulacağınız gibi, paralelliği taklit eden karmaşık sıralı kod için "paralel" demeye isteksizdir. Bu nedenle, bu konudaki insanların "eşzamansız paralellik ile hiçbir ilgisi yok" demelerinin nedeni. Evet, ama onları karıştırmayın.

Eşzamanlı: Paralellik olmadan eşzamanlılık olamaz (yukarıda açıkladığım gibi simüle veya gerçek olsun), ancak bu terim özellikle iki sistemin aynı anda aynı kaynağa bir noktada erişmeye çalışacağı gerçeğine odaklanmaktadır . Bununla uğraşmak zorunda kalacağınıza vurgu yapar.

Asenkron : Herkes asenkronun paralellik ile ilgisiz olduğunu söyleyerek haklıdır, ancak ona yol açar (işleri paralel veya değil yapmak yükü üzerindedir - okumaya devam edin).

"Eşzamansız", genellikle paralelizmde yer alan üç temel şeyi resmileştiren bir paralellik temsilidir : 1) görevin başlatılmasını (ne zaman başladığını ve hangi parametreleri aldığını söyleyin) tanımlayın, 2) bittikten sonra ne yapılması gerektiğini ve 3) Kodun aralarında ne yapmaya devam etmesi gerektiği.

Ancak yine de yalnızca sözdizimidir (genellikle geri arama yöntemleri olarak temsil edilir). Sahnenin arkasında, altta yatan sistem, sözde "görevler" olarak adlandırılan kodun, şu anda yürütmekte olduğu kodu tamamlayana kadar birikecek kod parçaları olduğuna karar verebilir. Ve sonra onları teker teker toplar ve sırayla yürütür. Ya da değil. Ayrıca görev başına bir iş parçacığı oluşturabilir ve bunları paralel çalıştırabilir. Kimin umrunda? Bu bölüm konsepte dahil değildir;)


2

Burada anlaşılacak biraz anlambilim var:

Eşzamanlılık veya Paralellik bir kaynak tartışması sorunudur, Asenkron ise kontrol akışı ile ilgilidir .

Farklı prosedürler (veya onları oluşturan işlemleri kendi sırasına hiçbir deterministik uygulaması varken), Asnekron olarak adlandırılmaktadır işlenmesi ; diğer bir deyişle, herhangi birinin herhangi bir zamanda T işlenebilme olasılığı vardır. Tanım gereği, birden fazla işlemci (örn. CPU'lar veya Kişiler) birçoğunun aynı anda işlenmesini mümkün kılar; tek bir işlemcide, bunların işlenmesi araya eklenir (örneğin, Konular).

Asenkron prosedürler veya işlemler kaynakları paylaştıklarında Eşzamanlı olarak adlandırılır ; Eşzamanlılık, herhangi bir zamanda kesin çekişme olasılığıdır. Hiçbir kaynak paylaşılmadığında paralellik önemsiz bir şekilde garanti edilir (örneğin, farklı işlemci ve depolama); aksi takdirde Eşzamanlılık kontrolü ele alınmalıdır.

Dolayısıyla Eşzamansız bir işlem veya işlem başkalarıyla Paralel veya Eşzamanlı olarak işlenebilir.


2

Eşzamanlılık, aynı anda birden fazla görevi yürütmek anlamına gelir, ancak aynı anda olması gerekmez. Birden fazla görev yapmanız gerektiğinde, ancak tek bir kaynağınız olduğunda eşzamanlılık için gidiyoruz. Tek çekirdekli ortamda eşzamanlılık Bağlam Değiştirme ile sağlanır.

Paralellik, birlikte şarkı söyleyip banyo yapabileceğiniz gibi aynı anda birden fazla görevi yerine getirmek gibidir. Şimdi Paralel olarak görev yapıyorsunuz.

Eşzamansız, bir görev yürütüldüğünde eşzamansız modelde iş parçacığı yürütme ile ilgili bir şeydir, öncekinin tamamlanmasını beklemeden farklı bir göreve geçebilirsiniz.

Asenkron programlama, eşzamanlılık elde etmemize yardımcı olur. Çok iş parçacıklı bir ortamda eşzamansız programlama, paralellik elde etmenin bir yoludur.


2

Msgstr "Senkronizasyon ve zaman uyumsuzluk programlama modelleridir. Eşzamanlı ve paralel görevlerin yürütülme yollarıdır ...". Kaynak: https://medium.com/better-programming/sync-vs-async-vs-concurrent-vs-parallel-5754cdb60f66

Başka bir deyişle, eşzamanlama ve eşzamansız, programınızın bir işlev çağrısı yaparken nasıl yürütüldüğünü açıklar (bekleyecek mi ya da yürütülmeye devam edecek mi?) aynı zamanda, paralel = aynı anda etkin bir şekilde yürütülür).


ortam bir kaynak değildir, başkası tarafından bir konuyu (yanlış) anlaması hakkında konuşan bir makale, onu otorite yapmaz.
Yüce deve Moha

1
Bu bir kaynak, dolayısıyla kaynak. Buradaki cevapların çoğu hiçbir alanda yetkililer tarafından yazılmamıştır ve yazarın yaptığı açıklama yeterince iyidir.
Pedro Boechat

Stackoverflow'da en azından bir oylama sisteminiz var ve bu bir profesyonel topluluğudur. Herkes ortama her şeyi yazabilir. İkisi arasında adil bir karşılaştırma değil.
Yüce deve Moha

1
Burada da herkes bir şey yazabilir, neden Medium'u seçtiğini bilmiyorum. Her neyse, ben profesyonel bir programcıyım ve bu anlayışı onaylıyorum. Ve zarif buluyorum çünkü nispeten kısa.
Pedro Boechat

Sorun, Medium'un kötü bir kaynak olmaması değil, sorun sadece harici bir sayfaya bağlanan bir cevabın cevap olmamasıdır. Alıntılanan bölüm üzerinde ayrıntılı olarak durduysanız veya makalenin içeriğini yalnızca bağlantı vermek yerine özetlediyseniz, bu yanıtı büyük ölçüde geliştirebilirsiniz.
David Schwartz

1

PARALELİZM VE MÜCADELE: bir noktada eşzamanlılık yalnızca bir görev yapılabilir. örnek: tek cpu işlemci paralellik bir noktada birden fazla görev yapabilirsiniz. örnek: çift çekirdekli veya çok çekirdekli işlemci


1

Burada bazı örneklerle açıklarım


paralellik

Bir grafik işlemcisi işlemek için paralel işlem yapması aynı kod bloğu (AKA çekirdek fiziksel ve mantıksal parçacığı binlerce). İdeal olarak, işlem aynı anda tüm dişler için başlar ve biter. Hiper iş parçacığı olmayan tek bir CPU çekirdeği paralel işlem yapamaz.

Not: İdeal dedim, çünkü 6M iş parçacığı olan bir donanımda 7M çağrıları olan bir çekirdeği çalıştırdığınızda, her seferinde tüm 6M iş parçacıklarını tüketirken, aynı 6M iş parçacığında aynı kodu iki kez çalıştırması gerekir.

  • bir çekirdek (bir kod parçası) birden fazla işlemcide yürütülür
  • eşzamanlı
  • ile tek bir yürütme dizisi , (a çekirdek böylece "dallanma", tüm evrelerde aynı şeyi yapmak gerekir aksi halde NOPs (no-işlemleri çok oluşturarak büyük ölçüde kaynak tüketir, çünkü hepsi konuları senkronize) kaçınılır "eğer")
  • esasen hızı önemli ölçüde artırır
  • yapabileceklerinizi büyük ölçüde sınırlar
  • büyük ölçüde donanıma bağlıdır

Not: Paralellik sadece GPU ile sınırlı değildir.


eşzamanlılık

Bir web hizmeti birçok küçük istek alır gerçek zamanlı ve bu isteklerin her birini, her zaman ve diğer isteklerden veya dahili işlerden bağımsız olarak farklı şekilde ele alması gerekir. Yine de web servisinin veri durumunu veya sistem sağlığını bozmadan her zaman çalışır durumda olmasını istiyorsunuz.

Bir kullanıcının bir kaydı güncellediğini ve başka bir kullanıcının aynı kaydı sildiğini hayal edin.

  • birçok görev yürütülür
  • içinde gerçek zamanlı (veya bir istek yapıldığında,)
  • ile farklı bir yürütme dizileri (paralel işleme kernel aksine, eş zamanlı görevleri farklı şeyler yapabilirsiniz, büyük olasılıkla Sıraya veya bunları öncelik var)
  • esasen ortalama tepki süresini önemli görev 2. bitirmek için görev 1. beklemek zorunda değildir, çünkü
  • temelde hesaplama zamanını feda eder, çünkü birçok görev aynı anda çalışıyor ve sınırlı kaynaklar var
  • çıkmaza girmemesi veya verileri bozmaması için paylaşılan kaynakları düzgün yönetmesi gerekir .

Not : Bu istekler genellikle bellek, veritabanı bağlantısı veya bant genişliği gibi bazı temel kaynakları tüketir. Yine de web servisinin her zaman duyarlı olmasını istiyorsunuz. Eşzamanlı olmayan bunu yapmak anahtarıdır duyarlı değil eşzamanlılık


eşzamanlı olmayan

Bir ağır işlem (G / Ç işlemi gibi) , GUI iş parçacığında çalıştırıldığında GUI'yi kolayca engelleyebilir . Kullanıcı arayüzünün yanıt verebilirliğini garanti etmek için , zaman uyumsuz olarak ağır bir işlem gerçekleştirilebilir. Benzer zaman uyumsuz işlemleri birer birer çalıştırmak daha iyidir . Örneğin, birden fazla IO-bağlı işlem aynı anda çalıştırılırsa önemli ölçüde yavaşlayabilir, bu nedenle başlaması için sıraya almaları daha iyidir

  • başka bir iş parçacığında bir görev veya görev grubu yürütülür
  • bir kere
  • bir görev varsa, o zaman sıra yoktur, bu yüzden ya bitmesini beklersiniz ya da ateş edip unutursunuz
  • bir grup görevse, aynı anda hem ateş hem de unutun, herkesin bitmesini bekleyin veya her bir görev bitişini çalıştırmak için
  • esas olarak performansını düşürür , çünkü üstlerin
  • başka bir iş parçacığına yanıt verir (UI iş parçacığının veya diğer önemli iş parçacıklarının engellenmesine karşı etkili)

Not: eşzamanlı olarak yürütülen bir eşzamansız işlem (yani bir kerede birden fazla) eşzamanlı bir işlemdir.


Not: Eşzamanlılık ve eşzamansızlık genellikle birbiriyle karıştırılır. Eşzamanlılık, sistemin birbirini etkilemeden birlikte çalışan farklı bölümlerini ifade eder (bu problemler genellikle kilitler, semaforlar veya mutekslerle çözülür). Zaman uyumsuzluk nasıl yanıt verdiğinizdir (iplik geçirme gibi).

* Not: Asenkron ve Multithreading genellikle birbirleriyle karıştırılır. Eşzamansız kod mutlaka yeni bir iş parçacığı içermez. donanım işlemi olabilir veya Stephan ona saf bir işlem dediği için bunu okuyun

örneğin aşağıda WPF + C # kodu, await Task.Run(()=> HeavyMethod(txt))süre, bir Eşzamanlı olmayan problem çözme textBox.Dispatcher.Invokebir eşzamanlılık sorununun çözülmesidir:

private async void ButtonClick(object sender, RoutedEventArgs e)
{
    // run a method in another thread
    await Task.Run(()=> HeavyMethod(txt));

    // modify UI object in UI thread
    txt.Text = "done";
}

// This is a thread-safe method. You can run it in any thread
internal void HeavyMethod(TextBox textBox)
{
    while (stillWorking)
    {
        // use Dispatcher to safely invoke UI operations
        textBox.Dispatcher.Invoke(() =>
        {
            // UI operations outside of invoke will cause ThreadException
            textBox.Text += ".";
        });
    }
}

0

Kafanızı bu kavramların etrafına sarmayı kısa ve ilginç hale getireceğim.

Eşzamanlı veya Paralel Yollar görevleri yürütülür.

Gerçek hayatta bir örnek alın: Hem devasa bir pasta yemenizi hem de bütün bir şarkıyı söylemenizi gerektiren bir zorluk var. Şarkının tamamını söyleyen ve pastayı bitiren en hızlı sizseniz kazanacaksınız. Kural şu ​​ki şarkı söyleyip aynı anda yiyorsunuz . Bunu nasıl yapacağınız kurala ait değil. Tüm pastayı yiyebilir, sonra tüm şarkıyı söyleyebilir veya yarım pasta yiyebilir, sonra yarım şarkı söyleyebilir, sonra tekrar yapabilirsiniz, vb.

Paralellik , görevlerin gerçekten aynı anda yürütüldüğü belirli bir eşzamanlılık türüdür. Bilgisayar biliminde, paralellik ancak çok çekirdekli ortamlarda sağlanabilir.

Senkron ve Asenkron - Programlama modelleri.

Senkronize olarak, kodu yukarıdan aşağıya doğru sırayla yürütülen adımlar olarak yazarsınız. Zaman uyumsuz bir programlama modelinde, kodu görevler olarak yazarsınız; bunlar daha sonra aynı anda yürütülür. Eşzamanlı olarak yürütmek, tüm görevlerin aynı anda yürütülmesi anlamına gelir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.