Saya baru-baru ini menjumpai projek pencetak 3D Terdapat dua kod, satu adalah open source Python printrun, dan satu lagi adalah sumber tertutup C++, yang kedua-duanya menggunakan multi-threading. C++ menggunakan mlib sumber terbuka untuk melaksanakannya, yang saya boleh fahami.
Mengenai kod C++, setiap pengawal mengawal kedudukan, suhu, muncung, dll., sepadan dengan benang. Lapisan bawah dilaksanakan melalui USB/port bersiri/bas CAN yang sama.
Saya masih menyemak sama ada printrun menggunakan multi-threading untuk melaksanakan berbilang benang pengawal seperti kod C++, atau adakah ia hanya multi-threading antara GUI dan port bersiri. Tidakkah pereka bimbang tentang GIL Python yang menjejaskan prestasi benang?
Selain itu, saya ada dua pilihan:
Pindahkan kod C++ ke pemacu berdasarkan RTOS, atau RT-Linux dan platform lain yang serupa.
Tukar Python kepada berbilang proses, dan setiap port bersiri menggunakan kaedah tak segerak asynio untuk mengendalikan acara.
Saya harap pelajar yang mempunyai pengalaman sedemikian dapat berkongsi pengalaman mereka.
Tidak perlu risau tentang GIL untuk aplikasi intensif io