Ярлыки

четверг, 17 марта 2011 г.

Qt Взаимодействие нитей(thread)

class MyObject : public QObject
{
    Q_OBJECTpublic slots:
    void MySlot( void )
    {
        std::cout << "slot called" << std::endl;
    }
};
class CThread1 : public QThread
{
    Q_OBJECTpublic:
    void run( void )
    {
        std::cout << "thread 1 started" << std::endl;
        int i = 0;
        while(1)
        {
           msleep( 200 );
           i++;
           if(i==1000)
              emit MySignal();
        }
    }
signals:
    void MySignal( void );
};
class CThread2 : public QThread
{
    Q_OBJECTpublic:
    void run( void )
    {
        std::cout << "thread 2 started" << std::endl;
        exec();
    }
};
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    CThread1 oThread1;
    CThread2 oThread2;
    MyObject myObject;
    QObject::connect( & oThread1, SIGNAL( MySignal() ),
        & myObject, SLOT( MySlot() ) );
    oThread2.start();
    myObject.moveToThread(&oThread2)
    oThread1.start();
    return a.exec();
}
 
link 

Комментариев нет:

Отправить комментарий