tensör akışı:: hizmet veren:: Kaynak

Bu soyut bir sınıftır.

#include <source.h>

Sunulabilirleri yüklemek için kaynak sağlayan veya daha doğrusu bu sunulabilirleri yüklemek için kullanılabilecek verileri işleyen bir modül için bir soyutlama.

Özet

Bu tür veri tanıtıcılarının örnekleri şunlardır:

  • serileştirilmiş bir kelime haritasına dosya sistemi yolu
  • yüklenecek makine tarafından öğrenilmiş bir modeli belirten gelen bir RPC'ye yönelik bir tanıtıcı
  • Bir yükleyici (bakınız loader.h ) veri kolları genellikle küçük olduğu varsayılır.

Bir Kaynak Yeni servables ve / veya servables yeni sürümleri ve / veya Sunulabilir versiyonlarını boşaltmaya ihtiyacı hakkında bilgi edinmek için bazı dış kaynak (örn dosya sistemi, RPC aramaları) izler. Bir Hedef modülü (örneğin talimat verilen geri arama kullanan AspiredVersionsManager yüke belirli bir servable) sürümü, (ler) i. Bundan başka, hedef modülünün semantik bağlı olarak, Kaynak dolaylı bu o servables çıkarılmasıyla boşaltma hangi olanlar talimatını verir.

Yaygın bir durum bir olmasıdır Kaynak tam olarak bir servable için sürümlerini yayar. Daha da basit bir durum, bir sunulabilir öğenin, sunucunun ömrü boyunca tek bir statik sürüme sahip olmasıdır.

Kaynaklar, birden çok yayınlanabilir hizmet arasında paylaşılan durumu barındırabilir, örn.

  1. Paylaşılan bir iş parçacığı havuzu veya birden çok hizmetin kullandığı başka bir kaynak.
  2. Her bir sunulabilir eşgörünümde veri yapısını çoğaltmanın zaman ve alan ek yükünü önlemek için, birden çok hizmetin kullandığı, paylaşılan salt okunur bir veri yapısı. Başlatma süresi ve boyutu ihmal edilebilir olan paylaşılan durum (örneğin iş parçacığı havuzları), kaynak tarafından hevesle oluşturulabilir ve daha sonra yayılan her ServableData öğesine bir işaretçi gömer. Pahalı veya büyük paylaşılan durumun yaratılması ilk uygulanabilir ertelenen edilmelidir Yükleyici :: Load () yöneticisi tarafından yönetilir çağrı, yani. Simetrik olarak, Yükleyici :: Boşaltma () bunu yıkmak gerektiğini pahalı / büyük paylaşılan devlet kullanarak nihai servable çağrısı.

Yapıcılar ve Yıkıcılar

~Source ()

Genel türler

AspiredVersionsCallback kullanarak
std::function< void(const StringPiece servable_name, std::vector< ServableData< T >> versions)>
Bir yönelik bir geri arama Kaynak bir hedef için bir servable tedarik sürümü (ler) için, yüklenecek.

Kamu işlevleri

SetAspiredVersionsCallback ( AspiredVersionsCallback callback)=0
virtual void
Kullanılacak bir AspiredVersionsCallback sağlar. En fazla bir kez çağrılabilir.

Genel türler

AspiredVersionsGeri arama

std::function< void(const StringPiece servable_name, std::vector< ServableData< T >> versions)> AspiredVersionsCallback

Bir yönelik bir geri arama Kaynak bir hedef için bir servable tedarik sürümü (ler) için, yüklenecek.

Geri aramanın tek bir çağrılması, tek bir sunulabilir akışla ilgilidir ('servable_name' tarafından verilir). Bir çağrıda sağlanan tüm sürümler, 'servable_name' içinde tanımlanan sunulabilir için olmalıdır. Farklı sunulabilir akışlardaki çağrılar birbirine diktir.

Birden çok çağrı, aynı kimliklere sahip sunulabilir veri nesneleri sağlayabilir (yani, aynı sunulabilir ad ve sürüm). Bu tür sunulabilir veri nesneleri anlamsal olarak eşdeğer olarak kabul edilir. Alıcı sonuçta birini elinde tutacak ve gerisini atacaktır.

Sunulabilir bir V sürümü bir ilk çağrıda sağlanırsa ve ardından ikinci bir çağrıdan çıkarılırsa, V'nin ihmal edilmesinin anlamı geri aramanın Hedefinin semantiğine bağlıdır. Belirli Hedefler, V'nin ihmalini, V'yi boşaltmak için üstü kapalı bir talimat olarak yorumlayacaktır. Her Hedef, bu bağlamda semantiğini belgelemelidir.

Kamu işlevleri

SetAspiredVersionsCallback

virtual void SetAspiredVersionsCallback(
  AspiredVersionsCallback callback
)=0

Kullanılacak bir AspiredVersionsCallback sağlar. En fazla bir kez çağrılabilir.

~Kaynak

virtual  ~Source()=default