Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Многопоточность и многозадачность


Автор: ricky 18.4.2011, 22:31
Доброго всем времени суток!)))Мне необходимо было написать программу , порождающую четыре потока, каждому из которых выделяется четвертая часть окна приложения. Первый поток выводит в свою область возрастающую числовую последовательность 0,1,2,…, второй – последовательность чисел Фибоначчи. Третий поток заполняет свой участок окна прямоугольниками случайного размера и цвета, четвертый поток фиксирует в трех переменных и выводит их в своей области окна число запусков каждого из предыдущих трех потоков. Первые три потока я создал,а вот как создать четвёртый,который фиксирует в трех переменных и выводит их в своей области окна число запусков каждого из предыдущих трех потоков, не знаю.Не могли бы вы мне подсказать,как создать этот поток?Заранее спасибо))))

Автор: borisbn 19.4.2011, 08:45
Цитата(ricky @  18.4.2011,  22:31 Найти цитируемый пост)
число запусков каждого из предыдущих трех потоков

насколько я понимаю эти три предыдущие потока запускаются один раз, т.е., скорее всего, имеется в виду число циклов в тех потоках. Если так, то в каждом из этих трёх потоков нужно завести переменную, считающую кол-во циклов, а в четвёртом вычитывать её из каждого потока и отображать
псевдокод:
Код

class Thread2 /* с Thread1 и Thread3 аналогично*/
{
public:
    int m_counter;
    void run() {
        while ( ! m_stop ) {
            countFibonacci();
            drawFibonacci();
            m_counter++;
        }
    }
};

class Thread4
{
public:
    Thread4( Thread1 * t1, Thread2 * t2, Thread3 * t3 )
        : m_thread1( t1 ), m_thread2( t2 ), m_thread3( t3 ) {}
    void run() {
        while ( ! m_stop ) {
            int t1 = m_thread1.m_counter;
            int t2 = m_thread2.m_counter;
            int t3 = m_thread3.m_counter;
            char buf[ 420 ];
            sprintf( buff, "t1 = %d t2 = %d t3 = %d summ = %d", t1, t2, t3, t1 + t2 + t3 );
            sendStringToGui( buff );
        }
    }
};

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)