Название: Не перезапускать поток Отправлено: RedDog от Февраль 02, 2012, 08:40 Как сделать нечто подобное:
Код
Код
т.е. создается класс потока, в него передается указатель на буфер для поиска, запускается поток, которй что то ищет. Буферов, в которых надо искать очень много, и что бы избежать оверхеда при перезапуске потоков (их >1 будет) надо дождаться некоего сигнала из главного потока, что буфер сменен и можно продолжать дальше уже с новым буфером. Т.е. через чего лучше организовать waitForSomeMutex(someMutex) ? Название: Re: Не перезапускать поток Отправлено: alexman от Февраль 02, 2012, 08:55 Можно, через QEventLoop попробовать.
Название: Re: Не перезапускать поток Отправлено: RedDog от Февраль 02, 2012, 09:01 Это как? Ни разу с ним не работал, плохо представляю.
Название: Re: Не перезапускать поток Отправлено: alexman от Февраль 02, 2012, 09:09 Да сам не пробовал. Главное выяснить: не будет ли грузить процессор int QEventLoop::exec ( ProcessEventsFlags flags = AllEvents ).
Код: class Searcher; Код: void MyThread::run() UPDATE: RedDog, немного поправил. Должно работать. Название: Re: Не перезапускать поток Отправлено: alexman от Февраль 02, 2012, 09:10 Еще не забудь, что, возможно, некоторые данные надо мьютексом закрыть.
Название: Re: Не перезапускать поток Отправлено: Igors от Февраль 02, 2012, 09:42 Код
Название: Re: Не перезапускать поток Отправлено: RedDog от Февраль 02, 2012, 13:11 alexman, не до конца понял...
главный поток работает по принципу: Код: for (int i = 0; i < threadCount; ++i) Код: for (int i = 0; i < threadCount; ++i) Код: for (int i = 0; i < threadCount; ++i) Название: Re: Не перезапускать поток Отправлено: alexman от Февраль 02, 2012, 14:51 Похоже...надо додумывать/пробовать. Только учти, что если exec еще не вызван, но вызван quit() - то в дальнейшем поток может зависнуть.
Название: Re: Не перезапускать поток Отправлено: RedDog от Февраль 02, 2012, 15:57 Да, так работает, только
Код: eventLoop.exec(); Хотя выгоды получил от этого всего %10 по скорости. Но зато проц не так сильно жрет теперь. Мутексы не быстрее работать будут? Название: Re: Не перезапускать поток Отправлено: alexman от Февраль 02, 2012, 16:10 Хотя выгоды получил от этого всего %10 по скорости. Имеешь в виду прирост скорости от использования потоков?Название: Re: Не перезапускать поток Отправлено: RedDog от Февраль 02, 2012, 16:32 Имеешь в виду прирост скорости от использования потоков? нет, имел ввиду прирост скорости без перезапуска потоков. |