Russian Qt Forum
Май 19, 2024, 15:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3 4 ... 6   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Помогите с задачей производителя/потребителя  (Прочитано 36945 раз)
V1KT0P
Гость
« Ответ #15 : Март 02, 2012, 19:57 »

ну вот предпоследний пост мой меньше кода вроде более разборчивый. Могу исходник прикрепить если так проще будет...
Конечно проще, ибо создавать новый проект и туда добавлять код лениво. А так скачал запустил, увидел, изменил, отослал.
Записан
lolbla2
Гость
« Ответ #16 : Март 02, 2012, 20:11 »

ну вот предпоследний пост мой меньше кода вроде более разборчивый. Могу исходник прикрепить если так проще будет...
Конечно проще, ибо создавать новый проект и туда добавлять код лениво. А так скачал запустил, увидел, изменил, отослал.
http://rapid.ufanet.ru/4005311

вот пожалуйста
Записан
Bepec
Гость
« Ответ #17 : Март 02, 2012, 20:14 »

lolbla2 - тебе нужна программа, сама записывающая в 1 потоке символ, вторым потоком реагирует, вытаскивает этот символ и выводит в гуи?

Буфер между потоками -1 символ(сообщение), буфер основного потока - бесконечный?

И самый значимый - тебе точно не надо 2 отдельных приложения? Улыбающийся

И да, где у тебя буфер должен быть быть???
« Последнее редактирование: Март 02, 2012, 20:17 от Bepec » Записан
lolbla2
Гость
« Ответ #18 : Март 02, 2012, 20:20 »

lolbla2 - тебе нужна программа, сама записывающая в 1 потоке символ, вторым потоком реагирует, вытаскивает этот символ и выводит в гуи?

Буфер между потоками -1 символ(сообщение), буфер основного потока - бесконечный?

И самый значимый - тебе точно не надо 2 отдельных приложения? Улыбающийся

да мне нужно именно первое что ты сказал, но правда я не понял что за бесконечный буфер основного потока?

кстати потребитель читает раз в 2 секунды, то есть производитель сует новые символы, а потребитель не успевает, значит символы теряются. Символы сувать сначала в очередь сообщений по нажатию кнопки, а поток производитель поочерёдно из очереди суёт в общий буфер, ну и там уже что успеет считать потребитель, ибо он раз в 2 сек считывает, а производитель без остановок сует в буфер символы.
Записан
Bepec
Гость
« Ответ #19 : Март 02, 2012, 20:23 »

Эм. ЛолБла2 - то, что ты сейчас пытаешься сказать это извращение )

Обычное лабораторное какое-то извращение.

Проще говоря надо раз в 2 секунды(допустим) очищать промежуточный буфер?

update:

Ты определись где у тебя очередь ) Т.е. символы не могут идти кучей, а идут последовательно с промежутком в 2 сек. Хотяя...

Код:
/*  не читай, это размышления :D
update_2:

WaitCondition тут не подойдёт... Ибо тебе как раз надо отказываться от него, изза паузы между посылами символов.*/
« Последнее редактирование: Март 02, 2012, 20:26 от Bepec » Записан
lolbla2
Гость
« Ответ #20 : Март 02, 2012, 20:30 »

Эм. ЛолБла2 - то, что ты сейчас пытаешься сказать это извращение )

Обычное лабораторное какое-то извращение.

Проще говоря надо раз в 2 секунды(допустим) очищать промежуточный буфер?

update:

Ты определись где у тебя очередь ) Т.е. символы не могут идти кучей, а идут последовательно с промежутком в 2 сек. Хотяя...

Код:
/*  не читай, это размышления :D
update_2:

WaitCondition тут не подойдёт... Ибо тебе как раз надо отказываться от него, изза паузы между посылами символов.*/

ты мну неправильно понял, посылает без пауз, а считывает с паузами, ну да противное извращение конечно.... согласен
просто в буфере может быть только 1 символ, поэтому записываются туда по одному непрерывно. А считываются другим потоком каждые 2 сек. Ну и понятное дело он будет не все символы успевать считать. в гуи выводить в таббрпаузер то что один поток записывал в буфер, а в другом тамбраузере то что второй поток успел считать
« Последнее редактирование: Март 02, 2012, 20:32 от lolbla2 » Записан
Bepec
Гость
« Ответ #21 : Март 02, 2012, 20:36 »

Так. Сосредоточься.

Поток1 -> непрерывная запись(или в любое время) символов в буфер.

Поток2 -> считывание раз в 2 секунды?Непонимающий
Записан
lolbla2
Гость
« Ответ #22 : Март 02, 2012, 20:36 »

Эм. ЛолБла2 - то, что ты сейчас пытаешься сказать это извращение )

Обычное лабораторное какое-то извращение.

Проще говоря надо раз в 2 секунды(допустим) очищать промежуточный буфер?

update:

Ты определись где у тебя очередь ) Т.е. символы не могут идти кучей, а идут последовательно с промежутком в 2 сек. Хотяя...

Код:
/*  не читай, это размышления :D
update_2:

WaitCondition тут не подойдёт... Ибо тебе как раз надо отказываться от него, изза паузы между посылами символов.*/

а вообще у меня такая проблема: почему поток не принимает сигналы от гуи? кнопкой шлю сигналы, а они до слота поток не доходят(( Ну это если не смотреть глобально на мою задачу, а хотя бы такую помощью прошу оказать)) Улыбающийся
Записан
lolbla2
Гость
« Ответ #23 : Март 02, 2012, 20:38 »

Так. Сосредоточься.

Поток1 -> непрерывная запись(или в любое время) символов в буфер.

Поток2 -> считывание раз в 2 секунды?Непонимающий

По нажатию кнопки в очередь суём символы.
Поток1 -> непрерывная запись(или в любое время) символов в буфер если они имеются в очереди символов.

Поток2 -> считывание раз в 2 секунды

ВОт так верно
Записан
Bepec
Гость
« Ответ #24 : Март 02, 2012, 20:39 »

С первым потоком определись. Там у тебя или запись в любое время, или же запись с каким то промежутком?
Да, и ещё, пустой буфер потоков выводить, иль буфер никогда не очищается?

Записан
V1KT0P
Гость
« Ответ #25 : Март 02, 2012, 20:40 »

а вообще у меня такая проблема: почему поток не принимает сигналы от гуи?
Потому что ты не даешь ему обработать сигналы.
Код:
void run()
{
    exec();//<<< Вот эта функция должна запускаться для обработки сигналов, а ты после перегрузки функции ее не добавил.
}
Записан
Bepec
Гость
« Ответ #26 : Март 02, 2012, 20:41 »

Неправильный ответ - V1KT0P.

Для приёма сигналов нет необходимости в exec();
Записан
lolbla2
Гость
« Ответ #27 : Март 02, 2012, 20:44 »

С первым потоком определись. Там у тебя или запись в любое время, или же запись с каким то промежутком?
Да, и ещё, пустой буфер потоков выводить, иль буфер никогда не очищается?



если там пусто то не читать оттуда.

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

поток 2 -> если буфер не пустой, подождать 2 сек и считать оттуда символ и вывести в гуи( в другой таббраузер).
Записан
V1KT0P
Гость
« Ответ #28 : Март 02, 2012, 20:44 »

Неправильный ответ - V1KT0P.

Для приёма сигналов нет необходимости в exec();
Ну и как же поток обработает сигнал, если он даже не проверяет список принятых сигналов?

Вот я вижу это примерно вот так: http://rghost.ru/36813315
Записан
lolbla2
Гость
« Ответ #29 : Март 02, 2012, 20:49 »

Неправильный ответ - V1KT0P.

Для приёма сигналов нет необходимости в exec();
Ну и как же поток обработает сигнал, если он даже не проверяет список принятых сигналов?

Вот я вижу это примерно вот так: http://rghost.ru/36813315

Спасибо конечно, но к сожалению это не то  Грустный

У тебя получается один отсылает другой сразу же принимает. А другой должен читать буффер только каждые 2 сек
Записан
Страниц: 1 [2] 3 4 ... 6   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 17.