|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||
Движение двух фигур в разных потоках03.01.2014, 23:08. Показов 2046. Ответов 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() Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|