close

Paralel Uzantılar

Navigasyona git Aramaya git
Image
.NET Framework yığını ve 4.5 sürümüne kadar olan bileşenler .

Paralel Uzantılarİngilizce'den  -  "Paralel uzantılar"), Microsoft Research ve Microsoft'taki CLR grubu [1] arasındaki işbirliğinin sonucu olarak geliştirilmiş, yönetilen bir paralellik kitaplığıdır . Kitaplık, .NET Framework'ün [2] 4.0 sürümünde yayınlandı . Parallel LINQ (PLINQ) ve Task Parallel Library (TPL) [3] [4] olmak üzere iki kısımdan oluşur . Aynı zamanda , paralel görevlerin yürütülmesini senkronize etmek ve koordine etmek için kullanılan bir dizi koordinasyon veri yapısı (CDS) içerir [5] .

Paralel LINQ

PLINQ veya Parallel LINQ [6] , sorguların nesnelere (LINQ for Objects) ve XML verilerine [7] (XML için LINQ) karşı yürütülmesini paralelleştirir. PLINQ, [3] sorgularını kullanarak veri paralelliğini [en] tespit etmek için tasarlanmıştır . PLINQ, sorgular olarak uygulanan nesneler üzerindeki herhangi bir hesaplamayı paralel hale getirebilir. Ancak nesneler, PLINQ tarafından tanımlanan arayüzü uygulamalıdır. Dahili olarak, yürütmek için TPL [5] kullanır . IParallelEnumerable

Görev Paralel Kitaplık

Görev Paralel Kitaplığı ( TPL [8] ), .NET [9] paralel uzantılarının görev paralelliği [uk] bileşenidir . Normal yöntem çağrıları ve temsilciler kullanarak paralel döngüler ve gibi paralel yapılar sağlar , böylece yapılar herhangi bir CLI dilinden kullanılabilir . Bir iş parçacığını oluşturma ve sonlandırmanın yanı sıra iş parçacığı sayısını mevcut işlemci sayısına göre ölçeklendirme işi , kademeli yakalama zamanlayıcısı [10] kullanılarak kitaplığın kendisi [4] tarafından yapılır . ForForEach

TPL, Task ve Future gibi diğer yapıları da içerir . Görev , programın geri kalanından bağımsız olarak gerçekleştirilebilen bir eylemdir. Bu anlamda, daha hafif bir nesne olması ve bir OS iş parçacığı oluşturma ek yüküne maruz kalmaması dışında anlamsal olarak bir iş parçacığına eşdeğerdir. Görevler, Görev Yöneticisi nesnesi tarafından kuyruğa alınır ve sıraları geldiğinde bir iş parçacığı havuzundaki birden çok işletim sistemi iş parçacığında çalışacak şekilde programlanır .

Gelecek , sonuç döndüren bir görevdir. Sonuç, Future nesnesi tarafından kapsüllenen ve [4] alınana kadar tamponlanan bir arka plan iş parçacığında değerlendirilir . Sonuç hesaplanmadan önce sonuç elde edilmeye çalışılırsa, istekte bulunan iş parçacığı sonuç elde edilene kadar engellenir [9] .

Başka bir TPL yapısı Parallel sınıfıdır . TPL, Parallel sınıfındaki üç statik yöntemle temel bir yapısal paralellik biçimi sağlar:

Parallel.Invoke
Bir dizi Eylem delegesini paralel olarak yürütür ve ardından bunların tamamlanmasını bekler
Paralel.İçin
C# dilinde bir for döngüsünün paralel eşdeğeri
Paralel.Her Biri İçin
C# dilinde bir foreach döngüsünün paralel eşdeğeri

Mimari

.NET Paralel Uzantılarının temel konsepti, bağımsız olarak yürütülebilen Задача, genellikle bir lambda işlevi olarak temsil edilen küçük bir kod bloğu olan . Hem PLINQ hem de TPL API, Görevler oluşturmak için yöntemler sağlar - PLINQ, sorguyu daha küçük Görevlere Parallel.Forbölerken Parallel.ForEach, ve yöntemleri Parallel.Invokedöngüyü görevlere böler.

Диспетчер задачPFX, görevleri çalışacak şekilde planlayan bir nesne içerir . Görev yöneticisi, daha sonra yürütülen genel bir görev sırası içerir. Ayrıca , Görevlerin yürütüldüğü birden çok iş parçacığını da içine alır. Varsayılan olarak, sistemdeki işlemci sayısı (veya işlemci çekirdeği) kadar iş parçacığı oluşturulur, ancak bu sayı manuel olarak değiştirilebilir. Her iş parçacığı, iş parçacığına özgü Görevler kuyruğuyla ilişkilendirilir. Boştayken, her iş parçacığı bir grup görevi alır ve bunları kendi yerel sırasına koyar ve burada sırayla yürütülür. Genel sıra boşsa, iş parçacığı, eşlerinin sıralarındaki Görevleri arayacak ve en uzun süredir kuyrukta olan Görevleri alacaktır ( Kademeli Görev Yakalama ). Yürütüldüğünde, Görevler bağımsız olarak yürütülürken, bir Görevin durumunu değiştirmek diğerlerine bağlı değildir. Sonuç olarak, paylaşılan bir kaynak kullanıyorlarsa, yine de kilitler veya diğer yapılar kullanılarak manuel olarak eşitlenmeleri gerekir.

Ayrıca

Bağlantılar

  1. C ommon L anguage R untime'ın kısaltması _ _ _
  2. .NET Framework 4'teki Yenilikler . Erişim tarihi : 21 Eylül 2011. 23 Eylül 2011 tarihinde kaynağından arşivlendi .
  3. 1 2 Eşzamanlılık Çağında Programlama: PFX ile Paralel Programlama . Erişim tarihi: 16 Ekim 2007. 2 Mayıs 2008 tarihinde kaynağından arşivlendi .
  4. 1 2 3 MSDN Dergisi: Görev Paralel Kitaplığı . Erişim tarihi: 16 Ekim 2007. 14 Ekim 2007 tarihinde kaynağından arşivlendi .
  5. 1-2 Haziran 2008. CTP - .NET FX Paralel Uzantılar . Erişim tarihi: 6 Ağustos 2008. 21 Ağustos 2008 tarihinde kaynağından arşivlendi .
  6. L anguage IN tegrated Q uery ( Rusça Tümleşik Dil Sorgusu ) kısaltması
  7. Genişletilebilir Biçimlendirme Dili'nin ( Rus Genişletilebilir Biçimlendirme Dili ) kısaltması
  8. T ask Parallel Library'nin kısaltması _ _
  9. 1 2 Joe Duffy. Windows'ta paralel programlama. - 2009. - S. "887–929". — ISBN 978-0321434821 .
  10. Daan Leyen; Wolfram Schulte, Sebastian Burckhardt (2009). "Paralel Görevler Kitaplığının Tasarımı". ACM SIGPLAN bildirimleri . 44 (10):227 . CiteSeerX  10.1.1.146.4197 . DOI : 10.1145/1639949.1640106 . Kullanımdan kaldırılan parametre kullanıldı |coauthors=( yardım )

Dış bağlantılar