Название: Запуск потоков по условию C++ Qt (QMutex) Отправлено: ILS_FIST от Апрель 30, 2020, 14:08 Всем привет! :D
Столкнулся с проблемой при запуске потоков по условию. Вот сама задача. "Создать программу, которая запускает потоки, каждый из которых выводит свою букву (A,B, C, D) 10 раз с интервалом примерно в 0.5 секунд. Задержку реализовать за счёт процессорных вычислений. С помощью мьютексов реализовать следующую синхронизацию: 1. "B" должна начать выводиться только после вывода 4 букв "А" и двух букв "С". 2. "D" только после вывода хотя бы одной буквы "B". 3. Вывести сообщение о том, что все потоки стартовали (начали выводить свои буквы). 4. Вывести сообщения о полном завершении работы всех потоков." Создал потоки, задал им приоритет. У меня не получается запускать другие потоки по условию используя мьютекс. Ставлю мьютексы, но работает не так, как надо. ??? Вот, что у меня пока вышло. Пожалуйста, помогите. Код: #include <QCoreApplication> Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: Igors от Апрель 30, 2020, 16:56 Проще написать (аттач) чем объяснять
Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: Old от Апрель 30, 2020, 18:37 Проще написать (аттач) чем объяснять ТС так тоже проще, взял и сдал лабораторку. :)Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: ViTech от Апрель 30, 2020, 18:43 ТС так тоже проще, взял и сдал лабораторку. :) Надеюсь оценку потом скажет :). Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: Igors от Май 01, 2020, 11:15 Надеюсь оценку потом скажет :). А что не нравится эстету ? Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: kuzulis от Май 01, 2020, 13:09 Прикольно если парень получит двойку ))
Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: ILS_FIST от Май 01, 2020, 13:11 Проще написать (аттач) чем объяснять Спасибо большое ;D ;D ;DБуду пытаться разобраться, как оно работает Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: ViTech от Май 01, 2020, 13:26 Прикольно если парень получит двойку )) Прикольно, если парень получит пятерку ;D. Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: Igors от Май 01, 2020, 15:52 Буду пытаться разобраться, как оно работает Ну бум надеяться что препод не спросит "а мутекс-то зачем?". Да, все будет работать и без него. Но в задании ясно сказано "с помощью мутексов" (а не чего-то еще), ну значит используем. Печать "Started" добавьте (я забыл)Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: ViTech от Май 01, 2020, 17:15 А что не нравится эстету ? Эстету не нравится, что опять все обо всех знают, всё в одной куче, и глобальные переменные (в частности done). И к самому заданию есть вопросы. Но какое задание - такое и решение. Если оно работает, чего ещё желать от лабораторки :). Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: Igors от Май 02, 2020, 09:07 Эстету не нравится, что опять все обо всех знают, всё в одной куче, и глобальные переменные (в частности done). И к самому заданию есть вопросы. Но какое задание - такое и решение. Если оно работает, чего ещё желать от лабораторки :). Вы опять становитесь на путь бесконечного (но бесплодного) "выяснения" :) Да, задание небезупречно, но его надо выполнять. И даже если есть свобода постановки (недавно постил такую задачу) "выяснить все" не удается, сам подход не конструктивен."Все обо всех" и "глобальные" = плохо. Ну собсно это тот же done, никаких др "всех" нет. Да, можно поместить его в некий класс-менеджер, нарисовать его методы, дать ниткам (хитрый) указатель на него и.т.п, но .. чем оправдана такая городушка? Да ровным счетом ничем, поэтому и городить ее не стоит :) Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: ILS_FIST от Май 02, 2020, 09:44 Буду пытаться разобраться, как оно работает Ну бум надеяться что препод не спросит "а мутекс-то зачем?". Да, все будет работать и без него. Но в задании ясно сказано "с помощью мутексов" (а не чего-то еще), ну значит используем. Печать "Started" добавьте (я забыл)Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: ViTech от Май 02, 2020, 13:05 Вы опять становитесь на путь бесконечного (но бесплодного) "выяснения" :) Да, задание небезупречно, но его надо выполнять. И даже если есть свобода постановки (недавно постил такую задачу) "выяснить все" не удается, сам подход не конструктивен. А если предположить, что задание составлял человек скорее хитрый и коварный, нежели глупый? :) Вот первый пункт: Цитировать 1. "B" должна начать выводиться только после вывода 4 букв "А" и двух букв "С". В Вашем решении "B" начинает выводиться, когда может напечататься уже больше двух "С". Можно ли более широко трактовать это условие? Ведь сказано "только после вывода 4 букв "А" и двух букв "С"", а не "после вывода 4 букв "А" и хотя бы двух букв "С"", по аналогии со вторым пунктом. Цитировать ...потоки, каждый из которых выводит свою букву (A,B, C, D) 10 раз с интервалом примерно в 0.5 секунд. Задержку реализовать за счёт процессорных вычислений. У Вас потоки B и D начинают греть атмосферу процессором ещё до вывода своих букв. A и C, кстати, тоже. Непорядок? "Все обо всех" и "глобальные" = плохо. Ну собсно это тот же done, никаких др "всех" нет. Да, можно поместить его в некий класс-менеджер, нарисовать его методы, дать ниткам (хитрый) указатель на него и.т.п, но .. чем оправдана такая городушка? Да ровным счетом ничем, поэтому и городить ее не стоит :) Действительно, зачем городить? Фигак-фигак и в продакшен - наше всё :). Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: Igors от Май 02, 2020, 15:43 А если предположить, что задание составлял человек скорее хитрый и коварный, нежели глупый? :) :)Действительно, зачем городить? Фигак-фигак и в продакшен - наше всё :). Ну в общем да :) KISS-прынцып никто не отменял. Предлагаю направить Ваше желание попридираться в нужное русло. Вот задачка (http://www.prog.org.ru/index.php?topic=32673.msg241671#msg241671) где оно было бы весьма желательно. Я ее уже "сделал", но увы, мое решение страдает серьезными недостатками. Хотите сразу скажу какими, хотите сами предположите (это интересно). Свобода постановки здесь есть - пожалуйста, планируйте. А то "выискивать недочеты" все мастера :)Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: ViTech от Май 02, 2020, 17:00 Ну в общем да :) KISS-прынцып никто не отменял. Предлагаю направить Ваше желание попридираться в нужное русло. Вот задачка (http://www.prog.org.ru/index.php?topic=32673.msg241671#msg241671) где оно было бы весьма желательно. Я ее уже "сделал", но увы, мое решение страдает серьезными недостатками. Хотите сразу скажу какими, хотите сами предположите (это интересно). Свобода постановки здесь есть - пожалуйста, планируйте. А то "выискивать недочеты" все мастера :) Нет, чайники двигать мне сейчас совсем не интересно. KISS :). Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: Igors от Май 03, 2020, 08:19 Нет, чайники двигать мне сейчас совсем не интересно. KISS :). Знаю. Да, энергии масса, и конечно возникает мысль "эх, ее бы на доброе дело" - ан нет. Вот месить какую-нить финтифлюшку будут до посинения, а работать - нееет. Впрочем это давно описано в сказке "властелин колец".Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: ViTech от Май 04, 2020, 11:57 Знаю. Да, энергии масса, и конечно возникает мысль "эх, ее бы на доброе дело" - ан нет. Вот месить какую-нить финтифлюшку будут до посинения, а работать - нееет. Впрочем это давно описано в сказке "властелин колец". А во "Властелине колец" что уже не так делали? Нужно было не самим к Ородруину топать, а послать армию чайников, чтобы они Саурона кипятком залили? Вы над этим сейчас работаете? :) Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: Igors от Май 06, 2020, 11:05 А во "Властелине колец" что уже не так делали? Там не раз подчеркивается громадная сила кольца, поэтому желание героев его как-то задействовать вполне понятно. Однако автор по сути утверждает что это невозможно, кольцо приносит только зло, и единственный верный путь - уничтожить его. Хмм... по-моему это спорно.Аналогии с программированием/программистами прозрачны/очевидны. Человек осваивает столько что я себе и представить не в состоянии, багаж знаний огромен. Но вот выплывает скромная фича "носиком вперед", нормально сделать ее за неск дней, а то и меньше. И что же наш знаток? А ничего, полный ноль, глупо хихикает :) Оказывается придумать какой-то план/алгоритм, ответить за него и.т.п. - ничего этого он не умеет. В его "базе знаний" такого нет (плохая задача!) - и все, два дня поголодал, морозцем ударило - он и лапки кверху. Ну и нафиг он нужен? Какая польза от его обширных познаний? Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: Авварон от Май 06, 2020, 11:38 Igors
Вам не приходило в голову, что нам не платят за то, чтобы мы двигали чайники носиками вперед и у лдей есть задачи поважнее\поинтереснее чем двигать чайники? Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: Old от Май 06, 2020, 11:44 Igors Этого не может быть. Только та ерунда, которой занимается Igors - это самые важные, сложные и достойные задачи для настоящих программистов! И только он их решает! Все остальные, априори, занимаются всякой фигней, не заслуживающей внимания. :) Вам не приходило в голову, что нам не платят за то, чтобы мы двигали чайники носиками вперед и у лдей есть задачи поважнее\поинтереснее чем двигать чайники? Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: Авварон от Май 06, 2020, 12:27 Old
Ну, справедливости ради, я как раз занимаюсь какой-то фигнёй :( Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: Old от Май 06, 2020, 12:39 Old Здесь все занимаются какой-то фигней, ну кроме... властелина чайников. :)Ну, справедливости ради, я как раз занимаюсь какой-то фигнёй :( Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: ViTech от Май 06, 2020, 12:42 Аналогии с программированием/программистами прозрачны/очевидны. Человек осваивает столько что я себе и представить не в состоянии, багаж знаний огромен. Но вот выплывает скромная фича "носиком вперед", нормально сделать ее за неск дней, а то и меньше. И что же наш знаток? А ничего, полный ноль, глупо хихикает :) Оказывается придумать какой-то план/алгоритм, ответить за него и.т.п. - ничего этого он не умеет. В его "базе знаний" такого нет (плохая задача!) - и все, два дня поголодал, морозцем ударило - он и лапки кверху. Ну и нафиг он нужен? Какая польза от его обширных познаний? Ага, а ещё хоббиты могли сразу на орлах к горе полететь, а не пешком до неё босиком шлёпать. Но орлы проявили несознательность... И нафиг они такие нужны? Какая польза от их обширных крыльев? Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: ViTech от Май 06, 2020, 12:46 Old Ну, справедливости ради, я как раз занимаюсь какой-то фигнёй :( Ну вот, уже фигнёй занимаетесь. Вам же не трудно дополнительно ещё одной фигнёй позаниматься :). Там делов-то на несколько дней всего. А то и меньше :). Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: ViTech от Май 06, 2020, 12:57 Здесь все занимаются какой-то фигней, ну кроме... властелина чайников. :) Ну как "властелина"... Даже собственные чайники не хотят стройными рядами носиками вперёд ходить. Определённо, тут всё дело в кольце, а не в умениях хозяина. Вот было бы кольцо всечаянья, тогда всех бы чайниками покорил! Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: Авварон от Май 06, 2020, 14:08 Что будет, если в чайник насыпать деревянных айтемов ???
Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: ViTech от Май 06, 2020, 16:01 Что будет, если в чайник насыпать деревянных айтемов ??? Кватернион? Если я правильно СУТЬ уловил... Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: Igors от Май 08, 2020, 12:12 Igors Не наблюдаю таких задач на этом форуме. Приведите хоть один пример.Вам не приходило в голову, что нам не платят за то, чтобы мы двигали чайники носиками вперед и у лдей есть задачи поважнее\поинтереснее чем двигать чайники? Хотя справедливости ради надо сказать что лишь немногие задачи годятся для обсуждения на форуме. Подавляющее большинство требует спец подготовки/знаний, требовать которых от форумчан некорректно. А "носиком вперед" - это ж "легкий труд", на производстве такое поручают беременным, ну покидала уголек лопаткой на свежем воздухе. В самом деле - знания требуются в рамках школьного курса, тонны чужих исходников нет, постановка гибкая. Что не нравится ? Да, в букваре этого нет, так что теперь? Голова-то есть или как? Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: Old от Май 08, 2020, 21:14 Не наблюдаю таких задач на этом форуме. Приведите хоть один пример. Наивно полагать, что все обсуждают свои задачи на форуме. Еще большей наивностью является вера в то, что если участник не обсуждает здесь свои задач, то он ничем не занимается/занимается фигней. :)Не все так зависят от форума... :) Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: Igors от Май 12, 2020, 10:44 Что-то притих остряк-самоучка :) Ну все-таки как же так, человек обладает такой огромной "суммой знаний", а на рядовой задачке - полный конфуз. Наверное он с этим "не работал", вот если бы он занимался движками, физикой и.т.п. - вот тогда...
Ну или проще - вот если бы был пример, он бы его переписал, а так.. Цитировать Да откуда я это могу знать ??? Название: Re: Запуск потоков по условию C++ Qt (QMutex) Отправлено: Old от Май 12, 2020, 12:06 Что-то притих остряк-самоучка :) Ну все-таки как же так, человек обладает такой огромной "суммой знаний", а на рядовой задачке - полный конфуз. И не говорите. Не хочет этот остряк-самоучка вашу работу делать. Вы его и так подкололи и эдак, а он все не ведется. Придется вам решать ее самостоятельно, как обычно через жопу. :) |