SORU
28 Temmuz 2010, ÇARŞAMBA


Greenlets nasıl çalışır?

Nasıl greenlets uygulanır? Python kullanır C yığın için yorumlayıcı ve yığın ayırır Python yığın çerçeveler, ama bunun ötesinde, nasıl tahsis/takas yığınları, nasıl kanca içine sözlü ve işlev çağrısı mekanizmaları, ve nasıl bu etkileşim ile C uzantıları? (Herhangi bir tuhaflıklar)?

Greenlet üst kısmında bazı açıklamalar vardır.c kaynağı, ama biraz donuk. FWIW geliyorum açısından biri yabancı ile CPython iç ama çok tanıdık ile düşük seviye sistem programlama, C, konuları, olayları, coroutines/kooperatif konuları, çekirdek programlama, vb.

(Bazı veri noktaları: don't use ucontext.h do 2x memcpy, alloc, and free on every context switch.)

CEVAP
28 Temmuz 2010, ÇARŞAMBA


Ve greenlet olsun çalışma sources, greenlet.c en üstünde aşağıdaki Özet doğrultusunda 16 yaşında başlayan uzun bir yorum göreceksin.:

Bir PyGreenlet C yığın bir dizi. bu kaydedilmiş olması gerekir ve adresleri tam böyle bir şekilde restore yığın aralığı geçerli veriler içeriyor bunu geçiyoruz.

82, tam olarak ne sorduğunu özetleyen çizgi devam ediyor. Bu satırları çalışmalar var (ve şu 1000 uygulama;-)...? Hala mantıklı, ne de kopyalama herhangi bir katma değer verme ve onları buraya yapıştırarak süre daha bu 66 satır aşağı sıkmak için bir yol göremiyorum.

Temelde, göreceksin orada gerçek bir "çengel" konuş (C seviye yığın özelliğinin ileri bir geri "altında tercüman burnu", tabiri caizse) hariç hassas ilişkiler ile iş parçacığı durumu çok iş parçacıklı kod ve kurtarmak ve geri yüklemek için bir greenlet devlet/yığın dayanır memcpy çağrıları artı bazı aramalar için Python bellek yöneticisi ayırmak/tahsis ve boş alan geliyor, ya da geri gitmek için yığın. Sıradaki üç fonksiyonları 227-295 zor bir iş kolu ve C 298-310 de makrolar birkaç sarmış durumdalar "bakım kolaylaştırmak için", olarak yorum yazıyor.

Arabirimi üzerinden diğer C uzantıları olabilir etkileşim ile greenlet uzantısıdır uygulanmaktadır hatları 956-1045 ve maruz aracılığıyla "CObject API" () greenlet.h elbette) belgelenmiş here.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • My name is Festis and I'm free

    My name is F

    2 EKİM 2011
  • nemoking of kinges

    nemoking of

    4 EYLÜL 2009
  • Skrillex

    Skrillex

    6 NİSAN 2010