|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||
Движение двух фигур в разных потоках03.01.2014, 23:08. Показов 2014. Ответов 2
Метки нет (Все метки)
Привет всем!всех с новым годом!и снова я к вам с моими проблемами)
короче пишу игрушку в консоле,столкнулся впервые с многопоточностью)использую стандартную библиотеку c++ <thread> для создания потоков и работы с ними.так же использую инициализацию графики в консоли с помощью библиотеки msoftcon.h. Все бы хорошо,но есть одна проблема...как выразиться лучше то...мне нужно чтобы две фигуры на экране двигались независимо друг от друга...но суть в том,что установка курсора set_cursor_pos(x,y) не успевает нарисовать одну фигуру и переходит к другой резко...и получается полная хрень...вначале я не понимал в чем трабл,но когда написал вот такую скромную программку(ниже код),то понял что дело все в курсоре:
но вот в чем проблема-символы вывода иногда находятся не в том месте где им нужно быть,к примеру иногда символ "*" находится справа,а символ "+" слева,хотя это не должно быть!я долго не думал,и понял что проблема с установкой курсора(set_cursor_pos(...); функция)...но вот как исправить я так и не догадался.мне нужно два курсора,чтобы один работал с дополнительным потоком,а другой с основным...но реально ли это в консоле на c++ или можно как нибудь сделать подругому все? Ребята,срочно нужна ваша помощь...без этого не могу продвинуться(разбираюсь в winAPI не много,поэтому можете примеры решения подсказать на нем) Добавлено через 23 часа 22 минуты Аууу народ?мне кто нибудь поможет?)
0
|
||||||
| 03.01.2014, 23:08 | |
|
Ответы с готовыми решениями:
2
Как обеспечить синхронизацию двух событий, описанных в разных потоках методом execute() Реализовать движение разных фигур по разным траекториям
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 04.01.2014, 00:55 | |
|
Задумайтесь немного. Потока 2, а консоль одна. Потоки между собой никак не синхронизированы, т.е. вполне возможна ситуация, когда один поток установил курсор, а другой начинает вывод. В итоге - вывод не там, где мы ожидали. Поэтому необходимо добавить один из механизмов синхронизации: мютекс, критическую секцию, семафор и т.п.
2
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 07.01.2014, 14:02 [ТС] | |
|
Спасибо за ответ,раньше уже нашел)использую библиотеку мьютекса <mutex> ,вроде все работает)
Добавлено через 23 часа 50 минут А теперь у меня следующий вопрос...я начал использовать мьютекс в своей игре,но выгодно ли это?разделение данных у меня идет только при двух операциях - установки курсора(set_cursor_pos) и нарисования части фигуры(std::cout<<'o') и это происходит для прорисовки двух фигур одновременно в двух разных потоках в один и тот же промежуток времени. Выгодно ли использовать мьютекс здесь,или посоветуете что нибудь более подходящее в этом случае? Добавлено через 14 часов 44 минуты Есть тут кто?)
0
|
|
| 07.01.2014, 14:02 | |
|
Помогаю со студенческими работами здесь
3
Может ли один делегат одновременно работать в двух разных потоках? Не работают getch() и cin в двух разных потоках на ввод одновременно/Как снизить нагрузку на процессор? Метод выполнить в 11 разных потоках, соответственно для разных входных массивов Циклы обработки сообщений разных форм в разных потоках Изменение разных элементов вектора в разных потоках даёт отличный от join() результат, нежели при detach() Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во
всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
|