2014-07-12 26 views
5

arasındaki fark nedir? Pencere iş parçacığı havuzu hakkında bazı bölümler okurum. CLR iş parçacığı havuzu gibi görünüyor.Windows iş parçacığı havuzu ve CLR iş parçacığı havuzu

CLR Windows tabanlı, bu nedenle CLR iş parçacığı, Windows iş parçacığı havuzu temel alır, doğru mu?

Her .net işleminin bir iş parçacığı havuzu olduğunu biliyorum, windows iş parçacığı havuzunda durum nedir? OS bir iş parçacığı havuzu veya çok var?

C# içinde geliştirici, pencere iş parçacığı havuzunu kod ile denetleyebilir mi?

+3

Okuduğunuz bir şeyi sorduğunuzda, bir bağlantı (veya en azından bir yayın adı) ekleyin. –

cevap

13

Düz bir yanıtı olmayan CLR uygulama sorularından biridir. ThreadPool'ün nasıl uygulandığını belirlemek CLR'ye bağlı değildir. Bu, CLR anasistemi'un görevidir. CLR'yi işletim sistemiyle bütünleştiren bir yazılım katmanı. CLR'nin iş parçacığı havuzu işlerini yapmak için kullandığı çekirdek arabirim IHostThreadPoolManager'dur. Yönetilmeyen bir COM arabirimidir, ancak ThreadPool sınıf üyeleriyle neredeyse bire bir eşleştirmeyi tanıma konusunda çok az sorun olacaktır.

CLR ana bilgisayarının birçok uygulaması vardır. Daha tanınabilir olanları, mscoree.dll tarafından uygulanan masaüstü uygulamaları için varsayılan CLR ana bilgisayarlarıdır. Farklı Windows sürümleri için farklı sürümleri vardır. Ve ASP.NET, Sql Server, Visual Studio Hosting işlemi, Silverlight, Windows Phone, XBox için özel sunucu. Ve daha az tanınabilir olan, büyük yönetilmeyen uygulamalar, bir .NET dilinde uygulanan komut dosyalarını desteklemek için CLR'yi kendileri barındırabilir. AutoCAD vb. CAD programları standart örneklerdir.

Bir iş parçacığının çekirdek kavramı CLR'de sanallaştırılmıştır. IClrTask ve IClrTaskManager bunun için barındırma arabirimleridir. Hangi bir ana bilgisayar bir işletim sistemi iş parçacığından başka bir şey üzerinde bir iş parçacığı uygulamak için izin verir. Bir lif gibi. Kimse bu btw'yi yapmıyor.

Elbette, Windows bir iş parçacığı için kendi api vardır. CreateThreadPool() winapi işlevi topun dönmesini sağlar. Ancak, makinemde mscor * .dll dosyaları etrafında dumpbin.exe/imports ile alay, kullanılmakta olduğunu görmüyorum. Sorunun en azından bir kısmı, CreateThreadPool() 'ın yalnızca Vista'dan sonra kullanılabilen daha sonraki bir winapi işlevi olabileceği olabilir. XP ve önceki Windows sürümleri çok daha basit bir uygulamaya sahipti. Yani, hayır, en azından .NET 4.5.2'nin masaüstü sürümü için, Windows iş parçacığı alakalı görünmüyor.