سؤال حول تنفيذ QTREAD
-
20-09-2019 - |
سؤال
يمثل كائن QTREAD مؤشر ترابط واحد للتنفيذ. ولكن هل يتم إنشاء مؤشر ترابط OS عند إنشاء كائن QTREAD ، أو عندما يكون start()
الطريقة تسمى؟
أنا مهتم بما إذا كان بإمكاني الحصول على العديد من كائنات QTREAD ملقاة ، وسيقوم نظام التشغيل بإنشاء مؤشرات ترابط start()
وقتلهم بعد run()
يعود ، وبعد ذلك يمكنني إعادة استخدام كائنات QTREAD مرة أخرى. لكني لا أريد الاحتفاظ بموارد نظام التشغيل بينما لا تفعل كائنات QTREAD أي شيء.
(للسجل ، أنا على دراية بـ QTConcurrent و QTREADPOOL ، ولا ، لا تلبي احتياجاتي في هذا الموقف)
المحلول
في Linux يتم إنشاء كائن الخيط (عبر pthread_create
) أثناء ال QThread::start
طريقة. يبدو الأمر نفسه مع Windows.
يمكنك رؤية المصدر هنا:
يونيكس: http://qt.gitorious.org/qt/qt/blobs/master/src/corelib/thread/qthread_unix.cpp (السطر 542).
شبابيك: http://qt.gitorious.org/qt/qt/blobs/master/src/corelib/thread/qthread_win.cpp (السطر 419).