Aklımdaki ilk şey, pydispatcher veya pubsub'un iş parçacığı için güvenli olup olmadığından emin olmaktı. pubsub anlamaya biraz zor veya karmaşık olabilir ama pydispatcher gerçekleştirmek için basit görünüyor. Sonra bir python modülünün iplik güvenli olup olmadığını anlamaya çalıştım. Herhangi bir buluşsallık?Bir python modülü nasıl değerlendirilir, thread güvenli midir?
cevap
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, 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.
- 1. Çıkarım servisinde tf.Session kullanırken thread güvenli midir?
- 2. Python: StatsModels'deki artıklar nasıl değerlendirilir?
- 3. Singleton kullanmak güvenli midir? ExecutorService
- 4. Statik bir son char [] parçacığı güvenli midir?
- 5. PHP exec güvenli midir?
- 6. Bu dişler güvenli midir?
- 7. $ _SERVER ['HTTP_REFERER'] güvenli midir?
- 8. Chmod 757 güvenli midir?
- 9. Hunspell dişli güvenli midir?
- 10. Konsol.yazı ipliği güvenli midir?
- 11. Marangoz dişli güvenli midir?
- 12. , Magento parçacığı güvenli midir?
- 13. Python İplik Modülü
- 14. Yıkıcıya katılarak eşzamansız çalışmayı beklemek güvenli midir?
- 15. Libuv vida dişi güvenli midir?
- 16. gen_tcp: accept/1 güvenli midir?
- 17. dealloc içinde dispatch_async güvenli midir?
- 18. putStrLn iş parçacığı güvenli midir?
- 19. Epoll iş parçacığı güvenli midir?
- 20. DatagramSocket.send iş parçacığı güvenli midir?
- 21. System.ServiceModel.Channels.BufferManager iş parçacığı güvenli midir?
- 22. ClassLoader iş parçacığı güvenli midir?
- 23. Bir amacı yeniden kullanmak güvenli midir?
- 24. Bir servlet içinde java.util.Timer kullanmak güvenli midir?
- 25. Trove kütüphanesi iplik güvenli midir?
- 26. Bu statik yöntem iplik güvenli midir?
- 27. Python'un günlüğü modülü iş parçacığı güvenli mi?
- 28. std :: wstring_convert dizisinin üye işlevleri güvenli midir?
- 29. Python modülü
- 30. GDB'deki işlevler nasıl değerlendirilir?
"Herhangi bir buluşsal" dedi, tam bir genel çözüm aramıyor. Aynı zamanda bayt koduna bakmaktan da şüpheliyim. – agf