سلامة الموضوع من محرك API ماتلاب
-
05-07-2019 - |
سؤال
ولقد اكتشفت من خلال التجربة والخطأ إلى أن وظيفة محرك MATLAB ليس مسار آمنة تماما.
لا أحد يعرف القواعد؟
واكتشفت من خلال التجربة والخطأ:
في ويندوز، والاتصال MATLAB هو عبر COM، لذلك تطبيق قواعد COM شقة خيوط. يجب أن يحدث كل المكالمات في نفس الموضوع، ولكن يمكن أن يحدث وصلات متعددة في مواضيع متعددة طالما يتم عزل كل اتصال.
ومن الإجابات أدناه، يبدو أن هذا ليس هو الحال على UNIX، حيث المكالمات يمكن أن تكون مصنوعة من المواضيع متعددة طالما يتم إجراء المكالمات بشكل متسلسل.
المحلول
وعندما بدأت لأول مرة باستخدام محرك، لم أكن تشغيل عبر أي وثائق على سلامة موضوع، لذلك افترضت أنه لم يكن موضوع آمنة.
ويمكنني استخدام ++ الفئة C لمزامنة الوصول إلى مثيل المحرك. للمزيد من التصاميم المعالجة المتوازية، I مثيل مثيلات متعددة من الطبقة المحرك.
و(تحرير) أنا باستخدام MATLAB R14 على سولاريس. I فتح محرك باستخدام دعوة "engOpen، وإغلاقه باستخدام 'engClose. برنامجي لا يتعطل عندما يتم استدعاء إغلاق بخيط رفيع مختلفة من تلك التي تسمى المفتوحة.
نصائح أخرى
من وجهة نظر المستخدم، مترجم ماتلاب هو ترابط واحد بحتة. أن تكون آمنة، وربما كنت بحاجة لجعل جميع الوصول إلى محرك من موضوع واحد.
ملحوظة أن داخليا، يستخدم ماتلاب الكثير من المواضيع. هناك مواضيع واجهة المستخدم الرسومية، وفي الإصدارات القليلة الماضية، لا يمكن للمترجم استخدام المواضيع متعددة وراء الكواليس. ولكن، للمترجم ما يعادل غويا إلى مترجم ترابط واحد (مع المقاطعات).
ويمكنك استخدام engOpenSingleUse
بدلا من استخدام engOpen
لجعل موضوع أكثر من واحد يعمل بشكل منفصل. (فقط Windows)