Название: Помощь по нитям Отправлено: Пантер от Сентябрь 06, 2007, 11:25 Никак не могу разобраться с работой нитей в куте. Как, допустим, мне запихнуть функцию в поток?
Название: Re: Помощь по нитям Отправлено: pastor от Сентябрь 06, 2007, 11:41 Весь код, который должен выполниться в потоке, помещаеться в метод run()
Код: class YourThread : public QThread Подробнее читаем в асисстанте или в Бланшетте Название: Re: Помощь по нитям Отправлено: Пантер от Сентябрь 06, 2007, 12:01 Это я понял. Есть у меня главный класс, в нем функция, которая обращается к другим функциям, данным ЭТОГО класса. Как мне закинуть ее в Run?
Название: Re: Помощь по нитям Отправлено: dilshodm от Сентябрь 06, 2007, 15:08 Цитировать Это я понял. Есть у меня главный класс, в нем функция, которая обращается к другим функциям, данным ЭТОГО класса. Как мне закинуть ее в Run? Надо просто вызвать необходимую public функцию из метода run() Только она (функция и, соотвественно, класс, ее содержащий) должна быть thread-safe, т.е. надо применять мютексы для исключения одновременного изменения данных. Название: Re: Помощь по нитям Отправлено: Tonal от Сентябрь 06, 2007, 15:26 По поводу синхронизации читать это: http://tula.bofh.ru/articles/184 (осторожно, ненормативная лексика)
Название: Re: Помощь по нитям Отправлено: Пантер от Сентябрь 06, 2007, 17:39 По поводу синхронизации читать это: http://tula.bofh.ru/articles/184 (осторожно, ненормативная лексика) :) Спасибо, это уже не раз изучал, хотя и не таким доступным языком. :)Название: Re: Помощь по нитям Отправлено: Пантер от Сентябрь 06, 2007, 17:53 Цитировать Это я понял. Есть у меня главный класс, в нем функция, которая обращается к другим функциям, данным ЭТОГО класса. Как мне закинуть ее в Run? Надо просто вызвать необходимую public функцию из метода run() Только она (функция и, соотвественно, класс, ее содержащий) должна быть thread-safe, т.е. надо применять мютексы для исключения одновременного изменения данных. class MainWindowImpl : public QMainWindow { public: void updateFileList(const QString qsPath) { .............. Добавление в QTableWidget } } Как эту функцию вызвать из треда? Ведь в данном случае в треде нужно создать экземпляр класса? Или как? Название: Re: Помощь по нитям Отправлено: pastor от Сентябрь 06, 2007, 18:45 Как эту функцию вызвать из треда? Ведь в данном случае в треде нужно создать экземпляр класса? Или как? Так нельзя. Прога у тебя упадет. Из другого потока нельзя обращаться напрямую к гуёвым элементам. Общаться между твоим и гуёвым потоком можно, например, через эвенты. Читаешь данные в потоке и при помощи эвента передаещь в гуевый поток. Название: Re: Помощь по нитям Отправлено: Пантер от Сентябрь 06, 2007, 18:58 Спасибо всем за помощь. Буду как-нибудь раскапывать.
|