crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

gpepsi
  опции профиля:
сообщение 4.10.2011, 20:37
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 31.3.2010
Пользователь №: 1582

Спасибо сказали: 0 раз(а)




Репутация:   0  


как из потоковой функции можно понять, что ожидается завершение потока ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
gpepsi
  опции профиля:
сообщение 6.10.2011, 17:08
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 31.3.2010
Пользователь №: 1582

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 6.10.2011, 16:38) Link
А ты попробуй.


а что тут пробовать
#include <QThread>

class Thread : public QThread {
    Q_OBJECT
private:
    virtual void run(void);

public :
    explicit Thread(QObject* parent) : QThread(parent) {}
    virtual ~Thread() {}

signals:
    void send(void);
};

class Owner : public QObject {
    Q_OBJECT
private:
    Thread m_thread;

    virtual void timerEvent ( QTimerEvent * event );

public :
    explicit Owner(QObject* parent = nullptr);
    virtual ~Owner() {}
    
public slots:
    void recv(void);
};


код
#include "main.h"
#include <QtCore/QCoreApplication>
#include <QDebug>

void Thread::run( void )
{
    forever
    {
        emit send();
        QThread::msleep(1000);
    }
}

Owner::Owner( QObject* parent /*= nullptr*/ ) : QObject(parent), m_thread(this)
{
    connect(&m_thread, SIGNAL(send()), this, SLOT(recv()));
    m_thread.start();

    startTimer(5000);
}

void Owner::recv( void )
{
    qDebug() << "received signal";
}

void Owner::timerEvent( QTimerEvent * event )
{
    m_thread.quit();
    m_thread.wait();
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    Owner owner;
    return a.exec();
}


без цикла обработки quit не прокатывает

Сообщение отредактировал gpepsi - 6.10.2011, 17:08
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- gpepsi   QThread   4.10.2011, 20:37
- - ViGOur   Послать ей сигнал. Или ввести какую-нибудь перемен...   5.10.2011, 10:00
- - gpepsi   Цитата(ViGOur @ 5.10.2011, 11:00) Или вве...   5.10.2011, 12:34
|- - ViGOur   Цитата(gpepsi @ 5.10.2011, 13:34) у меня ...   6.10.2011, 9:01
- - silver47   Цитата(gpepsi @ 5.10.2011, 14:34) у меня ...   5.10.2011, 13:53
- - gpepsi   Цитата(silver47 @ 5.10.2011, 14:53) Чем н...   5.10.2011, 15:09
- - gpepsi   Цитата(silver47 @ 5.10.2011, 14:53) Чем н...   5.10.2011, 18:03
- - silver47   Имеется ввиду, что если у вас есть указатели на по...   6.10.2011, 5:17
- - gpepsi   Цитата(ViGOur @ 6.10.2011, 10:01) Зачем д...   6.10.2011, 13:35
- - ViGOur   Или выносить в другой поток или не использовать ци...   6.10.2011, 14:42
- - gpepsi   Цитата(ViGOur @ 6.10.2011, 15:42) Или вын...   6.10.2011, 15:05
- - ViGOur   А ты попробуй. Механизм сигналов и слотов асинхрон...   6.10.2011, 15:38
- - gpepsi   Цитата(ViGOur @ 6.10.2011, 16:38) А ты по...   6.10.2011, 17:08
- - ViGOur   Посмотри на: QCoreApplication::processEvents, он к...   6.10.2011, 17:18
- - silver47   Цитатаvoid Thread::run( void ) {  ...   6.10.2011, 17:40
- - gpepsi   Цитата(ViGOur @ 6.10.2011, 18:18) Посмотр...   6.10.2011, 18:45
- - silver47   Так всетаки зачем бесконечный цикл то? Мое мнение ...   6.10.2011, 19:12
- - ViGOur   processEvents не сбрасывает ничего, а просто дает ...   6.10.2011, 19:17
- - gpepsi   Цитата(ViGOur @ 6.10.2011, 20:17) А если ...   7.10.2011, 7:52
- - ViGOur   Цитатато есть самому контролировать выход ?Да, име...   7.10.2011, 8:34
- - gpepsi   ViGOur, а если я создаю поток только для вычитыван...   7.10.2011, 9:00
- - ViGOur   Чтобы было меньше вопросов, предлагаю тебе почитат...   7.10.2011, 9:10


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 22.8.2025, 3:36