سؤال

أنا أستخدم Pthreads-Win32 للسماح بدعم ترابط Windows.

لديّ مشروع منصة متقاطعة يستخدم Pthreads وأريد أن أجعله يعمل على Windows مع مختلف المترجمين وإصدارات OS المختلفة.

على الأقل ، وفقًا للوثائق ، يجب أن تعمل Pthreads-Win32 مع MSVC وحتى بناء MSVC المقدمة.

لكنني لا أعرف ما إذا كانت المكتبة تم اختبارها مع أحدث مترجم MSVC مثل MSVC-2008 وما إذا كانت مدعومة تحت 64 بت.

من تجربتك الخاصة هل أنت على علم بأي مشاكل مع هذه المكتبة؟

  • أي مشاكل مع MSVC8 ، MSVC9 ، MSVC10؟
  • أي مشاكل مع Windows x86_64؟
  • أي مشاكل مع Windows Vista/Windows 7؟

ملحوظات:

  • لا تحاول حتى التوصية باستخدام Boost.Thread ، لست مهتمًا بها. وأنا على دراية بمكتبة Boost.Thread
  • لست مهتمًا بإعادة اختراع العجلة باستخدام API Win32 (الذي يفتقر إلى قفلات RW ، والمتغيرات الشرطية ، إلخ).
  • لقد تمكنت من تجميع مشاريع مع MSVC-2008 و Mingw GCC-4.3 ثم إجراء اختبارات الوحدة عليها بسهولة ، باستخدام DLL الحالي المسبق لـ PTHReads.

أنا فقط بحاجة إلى معرفة قيود pthreads-win32.

هل كانت مفيدة؟

المحلول

نحن سوف، Paxdiablo يبدو أنه لخصها هنا. لكن من تجربتي السابقة مع هذه المكتبة ، يمكنني إضافة بعض الأشياء هنا.

أولاً ، كنت قد استخدمت مجموعة فرعية من وظائف المكتبة مع MSVC 2008 دون أي مشاكل على الإطلاق.

ثانياً ، جعل بعض زملائي في طريق X86_64 (مع MSVC2008 و MINGW). لم يواجهوا أي مشكلة إما بعد العديد من دورات اختبار الإصدار التجريبي و QA. على الرغم من أنني لم أختبرها بنفسي ، لذا لا يمكن أن أكون متأكدًا جدًا من هذا.

لذلك بمظهر الأشياء ، قد يكون من المناسب الاستخدام. التحذير الوحيد هنا هو أنه إذا وجدت أي مشكلة ، فستكون تحت رحمة قائمة بريدية غير نشطة (أو ربما قد ترغب في الحصول على يديك مع الكود المصدري أو شيء من هذا القبيل).

نصائح أخرى

لا يمكن أن أقول بالتأكيد وهذا قد لا يكون ما تريد سماعه ، ولكن ، بالنظر إلى أن الإصدار الأخير مؤرخ 2006, ، سأكون حذرًا جدًا من استخدام هذا في أحدث المجمعين. هو - هي مايو العمل ولكن من المحتمل أن يكون الأمر متروكًا لك لتستمر. يبدو أن هناك الكثير من النقاش حول العمل في Cygwin و Mingw ولكن القليل الثمين لـ MSVC ، و ولا شيء يمكنني أن أجد ما وراء MSVC2005.

أيضًا ، إذا قمت بفحص أرشيف CVS ، فهناك عدد قليل من الملفات الثمينة التي تم تحديثها في العام الماضي (معظمها قبل سنتين إلى خمس سنوات). الزوجان المؤرخان منذ أقل من عام لديهما وصف "التعليقات وتغييرات نمط الكود" مما يقودني إلى الاعتقاد بأن أيا من لحوم المنتج لم يكن قيد التطوير النشط لفترة من الوقت.

الآن ربما أكون مخطئًا ، وهذا مجرد منتج مكتوب بشكل جيد ومستقر ، لكن طبيعتي الداخلية من المرجح أن تستنتج أنه أحد أدوات الأفكار الجيدة التي مرت على جانب الطريق.

وإلقاء نظرة على القوائم البريدية ، لا يوجد سوى سبع رسائل تم نشرها في الأشهر الخمسة الأولى من عام 2010 (لم تتم الإجابة على أقربها لمدة أربعة أشهر) و 59 فقط على مدار عام 2009. يبدو وكأنه مجتمع دعم نابض بالحياة على نطاق واسع.

يبدو أن هناك تصحيح لنوافذ 64 بت (انظر هنا في أرشيف 2010) ولكن ، مرة أخرى ، يبدو أن هذا يعاني من مشاكل لم تتم الإجابة عليها منذ فبراير ولا يذكر سوى دعم Mingw:

... هذا التصحيح (خشن بعض الشيء ويحتاج إلى بعض التنظيف النهائي وبعض التمديد إلى اختبار Makefile للسماح بالتقاطع هنا) يتيح إنشاء PTHREAD لهدف X86_64-PC-Mingw32.

هذا هو ليس هذا النوع من الأشياء التي سأستخدمها في برامج المهمة الناقدة الخاصة بي.

وأنا أعلم أنك ذكرت أنك لست مهتمًا بإعادة اختراع العجلة ، لكن يمكنك تنفيذ أقفال وقارئ متعددة المتغيرات من البصر الأساسي بسهولة تامة-حتى أنني حصلت على مخطط متعدد القراء يحل مشكلة الجوع في الكتابة بطريقة ما جعلت من براءة اختراع تقريبًا (لا أتفق مع براءات الاختراع البرمجيات ، لكن صاحب العمل يصر على أنها ذات قيمة).

وإذا كانت العجلة الوحيدة التي لديك نصف متحدثها مفقودًا وكانت عازمة بشكل فظيع ، فقد تحتاج فقط إلى إعادة النظر في :-)

في أي حال ، قدم Vista و Server2K8 كليهما متغيرات الحالة و قارئ قارئ/كاتب نحيف. تخزين الخيط المحلي كان موجودا منذ Win2K. أعلم أن هذا لن يساعد إذا كنت لا تزال بحاجة إلى دعم XP لكنني سأبحث عن المستقبل.

ونظرًا لأنك قد حددت قابلية النقل على أنها "Windows-Only" ، وجميع الميزات التي تريدها متوفرة في الإصدارات الحالية ، لست متأكدًا من أنني أرى ميزة للالتزام بـ Pthreads. إذا كنت تريد أن PORTIPARITION SOPIX ، نعم ، ولكن لا يبدو أن هذا هو الحال هنا.

فوجئت أن أحداً لم يقترح لبنات بناء خيوط إنتل. إنها نشطة للغاية ودعم كل شيء تقريبًا ، حيث كان الإصدار الأحدث قبل أقل من أسبوعين ، وميزات C ++ 0x إذا كنت تستخدم برنامج التحويل البرمجي المتوافق.

http://software.intel.com/en-us/intel-tbb/#sysreq

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top