Adlandırılmış Kanal Örnekleri
En basit kanal sunucusu bir kanalın tek bir örneğini oluşturur, tek bir istemciye bağlanır, istemciyle iletişim kurar, istemciyle bağlantıyı keser, kanal tutamacını kapatır ve sonlandırır. Ancak, bir kanal sunucusunun birden çok kanal istemcisiyle iletişim kurması daha yaygındır. Bir kanal sunucusu, her istemciye sırayla bağlanıp bağlantıyı keserek birden çok kanal istemcisine bağlanmak için tek bir kanal örneği kullanabilir, ancak performans düşük olabilir. Kanal sunucusunun aynı anda birden çok istemciyi verimli bir şekilde işlemek için birden çok kanal örneği oluşturması gerekir.
Birden çok kanal örneğine hizmet için üç temel strateji vardır.
- Borunun her örneği için ayrı bir iş parçacığı oluşturun. Çok iş parçacıklı kanal sunucusu örneği için bkz. Multithreaded Pipe Server.
- ReadFile, WriteFileve ConnectNamedPipe işlevlerinde ÇAKıŞAN yapısı belirterek çakışan işlemleri kullanın. Örnek için bkz. Çakışan G/ÇKullanan Adlandırılmış Kanal Sunucusu.
- İşlem tamamlandığında yürütülecek tamamlama yordamını belirten ReadFileEx ve WriteFileEx işlevlerini kullanarak çakışan işlemleri kullanın. Örnek için bkz. Tamamlama Yordamlarını Kullanarak Adlandırılmış Kanal Sunucusu.
Her örneğin iş parçacığı tek bir kanal istemcisinin iletişimlerini işlediğinden, çok iş parçacıklı kanal sunucusu yazması en kolay yoludur. Sistem, gerektiğinde her iş parçacığına işlemci süresi ayırır. Ancak her iş parçacığı, çok sayıda istemci işleyen bir kanal sunucusu için dezavantaj olan sistem kaynaklarını kullanır.
Tek iş parçacıklı bir sunucuyla, birden çok istemciyi etkileyen işlemleri koordine etmek daha kolaydır ve paylaşılan kaynakları birden çok istemci tarafından aynı anda erişime karşı korumak daha kolaydır. Tek iş parçacıklı bir sunucunun zorluğu, istemcilerin eşzamanlı gereksinimlerini işlemek için işlemci süresini ayırmak için çakışan işlemlerin koordinasyonunu gerektirmesidir.