2011-09-19 19 views

cevap

1

Teorik bir bakış açısından: Bu, keyfi bir program için bunu yapan hiçbir algoritma yoktur. halting problem gibidir.

Kullanılmış modülleri inceleyebilir ve bunların vida dişi olup olmadığını kontrol edebilirsiniz. Ancak iplik güvenliği için bir modülün bayt kodunu kontrol etmenin genel bir yolu yoktur. http://effbot.org/zone/thread-synchronization.htm veya iş parçacığı yöntemleri içerdiğini:

kütüphane veya uygulama parçacığı güvenli olup olmadığını yazar girişi olmadan belirlenmesi için
+1

"Herhangi bir buluşsal" dedi, tam bir genel çözüm aramıyor. Aynı zamanda bayt koduna bakmaktan da şüpheliyim. – agf

2

, ben senkronizasyon dişleri için mekanizmalar arardım http://docs.python.org/library/threading.html Ancak

, bunların hiçbiri söyleyecektir API'yi güvenli bir şekilde nasıl kullanabilirsiniz. Pratik olarak her şey bir iplik nesnesinin içine yerleştirilebilir ve iplik senkronizasyon nesneleri kullanılarak iletilebilir.

Pubsub gibi bir şey için API'yi saran ve yalnızca Kuyruklar üzerinden iletişim kuran bir sınıf oluşturabilirsiniz. Pubsub, örneğin wx ile aynı iş parçacığında yaşadıysa, iletileri göndermek için bir iş parçacığı API'si kullanarak Kuyruktaki iletileri enjekte etmek için bir API oluşturulabilir. Daha sonra bir pubsub döngüsü veya zamanlayıcısı Kuyruğu izliyor olabilir. Sonra mesaj gönderirdi. Pubsub gibi bir şeyi sarma ile ilgili sorunlardan biri, bir yerde oylama gerektirecektir. Yoklama zamanlayıcılar tarafından yapıldıysa şeffaf hale getirilebilir. Her iş parçacığı, pubsub söz konusu iş parçacığında yer almadıysa iletileri almak için bir zamanlayıcı ayırmak zorunda kalacaktı. Buna daha zarif yaklaşımlar olabilir, ama ben onların farkında değilim.