2009-07-29 14 views

cevap

4

Büyük kazanım, C tabanlı uzantılar can release the GIL olduğunu düşünüyorum. Örneğin, bir MySQL bağdaştırıcısı, diğer tüm Ruby iş parçacıklarını engellemeden uzun süre çalışan veritabanı sorgularını oldukça temiz bir şekilde çalıştırabilir.

7

1,9 alanındaki konular doğaldır, ancak yalnızca bir iş parçacığının aynı anda çalışması için "yavaşlatılmıştır". Bunun nedeni, iş parçacıklarının gerçekten paralel olarak çalışması durumunda mevcut kodu karıştırmasıdır.

Artıları:

  • IO Konuda zaman uyumsuz şimdi. Bir iş parçacığı IO üzerinde bloklarsa, IO tamamlanana kadar başka bir iş parçacığı devam eder.
  • C uzantıları gerçek iş parçacığını kullanabilir.

Eksileri:

  • Konu kullanırken bulmak zor sorunları olabilir parçacığı güvenli geçirilmeyen C uzantıları. Bir uzantıyı iş parçacığı ile kullanılmasını önlemek için iş parçacığı güvenli olmayan olarak işaretlemenin bir yolu yoktur.
  • Sınıf adı aynıdır. Yerel iş parçacığı sınıfı başka bir şey adlandırılmış olmalıdır.
  • Ve en kötüsü, iş parçacığı farklı platformlarda farklı çalışır! Örneğin, priority(), Solaris, Windows ve Linux arasında farklıdır. loop {} gibi şeyler Linux'ta iyi çalışıyor, diğer konular ise çalışmaya başlıyor. Ancak, Solaris iş parçacığı üzerinde, sürecin zamanını bekler ve asla çıkmazsınız!
İlgili konular