سؤال

يمثل كائن 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).

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