crossplatform.ru

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

6 страниц V  « < 4 5 6  
Ответить в данную темуНачать новую тему
> многопоточность QThread
Гость_wiz29_*
сообщение 28.6.2010, 15:26
Сообщение #51





Гости








    


Цитата(eldar85 @ 18.4.2010, 2:10) *
т.е. если у меня двух ядерник, то лучше всего не более двух потоков использовать, я правельно понял?)))

Используй QtConcurrent чтобы не заморачиваться на вычисление оптимального числа потоков
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wolf.diesel
  опции профиля:
сообщение 13.7.2010, 9:29
Сообщение #52


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 10.7.2010
Пользователь №: 1874

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




Репутация:   0  


Вообще, чтобы небыло подобных вопросов о межпроцессном взаимодействии, уясни одну вещь: каждый поток выполняется в своем пространстве и со своей памятью.
Чтобы изменить ЛЮБЫЕ данные ЛЮБОГО потока твоей аппликухи, ты должен использовать ПОТОКОБЕЗОПАСНЫЕ методы.
Это касается не только кути фреймворка. Это стандарт.

Так вот, для тебя было бы проще описать в классе главного окна слот, который бы принимал данные от потока, а в потоке описать сигнал(окончания действия, к примеру), который будет вызываться только по окончании работы и внутренней подготовки данных.

Далее, при создании потока ты будешь делать connect(thread, SIGNAL(метод_который_описан_как_сигнал(record *)), widget, SLOT(слот_описанный_тобой_для_компонента_или _формы(recod *));
обрати внимание, что слот и сигнал имеют в параметре одинаковый тип данных(!).
А далее, в слоте уже делай с данными все, что пожелаешь. Можешь даже уничтожить, не читая :D :D :D

Это называется потокобезопасное программирование, без применения всяких вытесняющих технологий )

Только помни, что данные, которые ты передаешь между потоками должны быть созданы в куче, а не в стеке. То есть
record * rec = new record();


Ну и позаботиться об удалении, после использования неплохо бы:
delete rec;


Надеюсь, идея понятна )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 13.7.2010, 18:26
Сообщение #53


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Цитата(wolf.diesel @ 13.7.2010, 12:29) *
без применения всяких вытесняющих технологий

а что за технологи такие ? :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wolf.diesel
  опции профиля:
сообщение 14.7.2010, 17:56
Сообщение #54


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 10.7.2010
Пользователь №: 1874

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




Репутация:   0  


Пардон, неправильно выразился
QtConcurrent - подобных библиотек.
Я согласен, что метод мной приведенный работает далеко не всегда и, все ж таки, придется юзать мьютексы и прочие прелести тредов, но то, что я написал, хотя бы, даст пинка мысли )
Начало. Ато человек вконец запутался, как я посмотрел )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

6 страниц V  « < 4 5 6
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 29.3.2024, 15:15