سؤال

وأنا تطوير تطبيق في أي أنا لا خاصية تعدد. واحدة من بلدي المواضيع عامل يعرض الصور على القطعة. موضوع آخر يلعب الصوت. أريد أن وقف / تعليق / وقفة / النوم على المواضيع في هذا الحدث نقرة زر. وهو نفس عندما كنا انقر على الفيديو لاعب زر التشغيل / الإيقاف المؤقت. أنا وضع طلبي في ج ++ على منصة لينكس باستخدام مكتبة pthread للخيوط.

ويمكن لأي شخص أن يقول لي كيف يمكنني تحقيق المواضيع وقفة / تعلق؟

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

المحلول

ويمكنك استخدام مزامنة، متغير حالة، ومتغير العلم مشتركة للقيام بذلك. دعونا نفترض هذه هي محددة عالميا:

pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
int play = 0;

هل يمكن هيكلة كود التشغيل الخاصة بك مثل هذا:

for(;;) { /* Playback loop */
    pthread_mutex_lock(&lock);
    while(!play) { /* We're paused */
        pthread_cond_wait(&cond, &lock); /* Wait for play signal */
    }
    pthread_mutex_unlock(&lock);
    /* Continue playback */
}

وبعد ذلك، للعب يمكنك القيام بذلك:

pthread_mutex_lock(&lock);
play = 1;
pthread_cond_signal(&cond);
pthread_mutex_unlock(&lock);

وإلى وقفة:

pthread_mutex_lock(&lock);
play = 0;
pthread_mutex_unlock(&lock);

نصائح أخرى

لديك المواضيع استطلاع الرأي الخاص بك ل "رسائل" من واجهة المستخدم على فترات منتظمة. وبعبارة أخرى، UI في الرسائل المشاركات التي عمل موضوع واحد إلى المواضيع عامل على سبيل المثال الصوت / الفيديو.

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