Frage 1)
Was mich besonders interessiert ist `void py_destroy(void* ptr)` Funktion. Momentan lösche ich nur die Instanz, aber ich müsste dort auch allen weiteren "Aufräum Code" reinschreiben, wie z.B Locks aufheben und die Verbindung zu Hardware Komponenten schließen oder? Sonst würde bei folgendem Code solche Locks bestehen bleiben:
Code: Alles auswählen
c = CppExt.create()
c = 5
#Nun könnte der Garbage Collector irgendwann `void py_destroy(void* ptr)` aufrufen und ich könnte evt bestehende Zugriffe auf Ressource nicht ordentlich beenden
So wie ich das verstehe muss man in Python C Erweiterungen besonders bei Thread aufpassen und zum Beispiel Python mit "Py_BEGIN_ALLOW_THREADS" die Möglichkeit zur Abarbeitung von Threads geben. Wie ist es jedoch wenn Threads in der C++ Bibliothek verwendet werden auf die ich keinen Einfluss habe, ist das ein Problem?
Code
CPP Datei: http://www.python-forum.de/pastebin.php?mode=view&s=382
Python setup Datei: http://www.python-forum.de/pastebin.php?mode=view&s=383
Beispiel:
Code: Alles auswählen
import CppExt
c = CppExt.create()
print CppExt.get(c) # 0
CppExt.add(c, 5)
print CppExt.get(c) # 5
del c #for testing `void py_destroy(void* ptr)`
Grüße Lars