libeio على Windows
-
28-09-2019 - |
سؤال
ما الذي يتطلبه الأمر إلى الميناء libeio إلى Windows؟
المحلول
بعد عام تقريبًا ، ما قد ترغب في النظر إليه (أنت أو أي شخص آخر يجد هذا عبر البحث أو Google) libuv, ، سابقا liboio. على عكس الإجابة المقبولة ، فإنه ليس كثيرًا حتى أن Windows كان ، أو في ذلك الوقت ، محرصًا لمفهوم I/O الحدث ، لم يكن معروفًا خارج دائرة Arcane لنظام التشغيل Windows Windows العميق المطورين. في مساحة Windows ، يتم تنفيذ مفهوم مماثل على أنه منافذ الإكمال I/O, ، لذلك ليس من الضروري أن يكون هناك نسخة/منفذ/شوكة/شوكة/شوكة/التناظرية ، فسيتعين عليها فقط الحصول على واجهة برمجة تطبيقات ذات مظهر libeio إلى شيء كان يستخدم IOCP أسفل الغطاء.
نصائح أخرى
يستخدم Libeio مفاهيم UNIX APIs و UNIX غير المعروفة في عالم Windows. الحلول التي لديك هي:
- استخدم طبقة تجريد UNIX على Windows: مثل سيجوين أو خدمات Windows لـ UNIX. ولكن حتى مع هذه الطبقات ، سيكون لديك صعوبات في تشغيل رمز Libeio لأن هناك الكثير من التعليمات البرمجية المعتمدة على النظام مثل هذا:
# if __FreeBSD__ || defined __NetBSD__ || defined __OpenBSD__ # define _DIRENT_HAVE_D_TYPE /* sigh */ # define D_INO(de) (de)->d_fileno # define D_NAMLEN(de) (de)->d_namlen # elif __linux || defined d_ino || _XOPEN_SOURCE >= 600 # define D_INO(de) (de)->d_ino # endif
- أعد كتابة libeio مع مكتبة التجريد المحمولة مثل GTK+ (جيب في الواقع)، wxwidgets أو كيو تي. تنفذ أطر عمل Thosse بالفعل API القوية لروتين منخفض المستوى وخدمات الاتصالات وقنوات I/O وقوائم الانتظار غير المتزامنة. بذل مطورو تلك الأطر الكثير من الجهد للسماح بقابلية الرمز الخاص بهم. ليس عليك إعادة اختراع العجلة.
بالتأكيد ، الحل الثاني هو الأفضل ، مع الأخذ في الاعتبار الحجم الصغير نسبيًا لـ eio.c ، الملف C الوحيد لـ libeio.