2011-03-31 7 views
5

kitabı yayımlandı:Microsoft'un Paralel Kalıpları Kitaplığı: POSIX/Linux'a bağlantı yapmak ne kadar zorlandı?

http://blogs.msdn.com/b/vcblog/archive/2011/03/15/10139453.aspx

Gerçekten merak ediyorum

, kimsenin ona POSIX'e/port çalmak olurdu ne kadar kolay uygulanması yoluyla gitti ve gördü ? Örneğin Yönetilen C++ uzantıları kullanıyor mu? Genel olarak ya da Aynchronous Agents kütüphanesinde herhangi bir düşünce var mı? Bir std :: ya da boost :: eşdeğeri olması güzel olurdu.

+0

ne anlamı var? Unix üzerinde zaten paralel programlama için çeşitli destek var, örneğin, Boost'ta mevcut olmayan MS kütüphanelerinin avantajı nedir? – DarkDust

+2

Intel'in TBB'si PPL'nin bir alt kümesini (Asynchrounous Agents olmadan) gerçekleştirir ve POSIX platformlarında kullanılabilir. Tabii ki kendi paralel motorunu kullanıyor ve üstüne PPL arayüzleri uyguluyor. –

+2

Yönetilen uzantılarla ilgili. PPL yönetilen uzantıları kullanmaz. Bildiğim kadarıyla standart C++ 11 kod tabanı. Kaynak kodu şablon temeli – Ghita

cevap

2

DarkDust - Boost, iş parçacığı paralelliğini destekler, oysa PPL ve TBB iş parçacığı havuzu üzerinde görev tabanlı bir soyutlama sağlar ve standart kitaplığın algoritmalarını ve kapsayıcı yaklaşımını kullanır. Bu, zamanlama ve kaynak yönetimi ile ilgili birçok baş ağrısını ortadan kaldırır. Bazı görev tabanlı paralellik özellikleri şimdi C++ 11'de de desteklenmeye başlamıştır, özellikle std :: future ve diğer async ile ilgili özellikler.

Ghita - PPL yönetilen uzantıları kullanmaz, yalnızca yerel koddur, ancak şablon temelli değildir. Windows uygulaması, Concurrency Çalışma Zamanı, ConcRT üzerinde çalışır. Daha fazla bilgi için bkz. http://msdn.microsoft.com/en-us/library/gg663535.aspx. Intel'in uygulaması, PPL'nin bir alt kümesi için kaynak kod uyumlu bir API sağlar. TBB/PPL uyumluluğunun tartışılması için bkz. http://threadingbuildingblocks.org/docs/help/reference/appendices/ppl_compatibility.htm.

Alexey - Unix üzerinde Intel versiyonu kendi çalışma zamanı üstünde çalışır. Windows'ta TBB 3.0, ayrıca bağlamak şekline bağlı olarak, ConcRT üstünde çalışabilir. http://software.intel.com/en-us/blogs/2010/05/04/tbb-30-new-today-version-of-intel-threading-building-blocks

kitap vb Amazon üzerinde mevcuttur ve içerik MSDN http://msdn.microsoft.com/en-us/library/gg675934.aspx

1

O Microsoft'un Paralel Patterns Kütüphanesi (PPL) benziyor üzerinde de mevcuttur şimdi gerçekten çapraz platform, buraya bakın!

O Microsoft'ta son deniz değişim onların C++ DİNLENME SDK (Kazablanka) en son sürümü ile artık tüm platformları (Windows/Mac/Linux/Android ve iOS) desteklemek gibi görünüyor. ilginç şey ise

, (x fark) bu DİNLENME SDK Kütüphanesi (PPL) ancak pplx ad alanında olduğu Paralel Patterns bir sürümünü haline getirilmesidir. onlar .sonra onları PPLX görevleri kullanarak ve zincirleme vardır http://msdn.microsoft.com/en-us/library/jj950081.aspx: Burada Microsoft'un MSDN sayfasından görebileceğiniz gibi

#include <ppltasks.h> 

..its ...

#include <pplx/pplxtasks.h> 

:

Yani yerine

() sözdizimi. Sayfanın yukarıdan

kod örneği: Bu yıl da

// Creates an HTTP request and prints the length of the response stream. 
pplx::task<void> HTTPStreamingAsync() 
{ 
    http_client client(L"http://www.fourthcoffee.com"); 

    // Make the request and asynchronously process the response. 
    return client.request(methods::GET).then([](http_response response) 
    { 
     // Print the status code. 
     std::wostringstream ss; 
     ss << L"Server returned returned status code " << response.status_code() << L'.' << std::endl; 
     std::wcout << ss.str(); 

     // TODO: Perform actions here reading from the response stream. 
     auto bodyStream = response.body(); 

     // In this example, we print the length of the response to the console. 
     ss.str(std::wstring()); 
     ss << L"Content length is " << response.headers().content_length() << L" bytes." << std::endl; 
     std::wcout << ss.str(); 
    }); 

    /* Sample output: 
    Server returned returned status code 200. 
    Content length is 63803 bytes. 
    */ 
} 

2014 başlıklı bir konuşma "Kullanarak C++ Web Hizmetleri Bağlanma" CPPCon Android'de çalışan Tutulma Casablanca ve PPLX kullanarak gösterir.

video, burada olduğu sonucunu verir:

https://www.youtube.com/watch?v=WvaxcicwIss#t=1638 Nihayet Casablanca DİNLENME SDK burada bulabilirsiniz: https://casablanca.codeplex.com/

+1

olarak mevcuttur. Bu cevap yanıltıcıdır, PPL * sadece * pullyx casablanca için gerekli olan ppl parçasını uyguladığı gibi sadece çapraz platformdur - sadece görevler. Paralel algoritmalar veya kaplar yoktur. – Rado