Четверг, 28 Марта 2024, 22:21

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум игроделов » Программирование » C/C++ » Потоки?
Потоки?
ETUN4Дата: Суббота, 21 Сентября 2013, 20:14 | Сообщение # 21
частый гость
Сейчас нет на сайте
Если нужен пример с реализацией потоков, пиши. Только если ты работаешь в визуал С++ .
DeswingДата: Суббота, 21 Сентября 2013, 20:16 | Сообщение # 22
заслуженный участник
Сейчас нет на сайте
Izaron, а что нужно сделать, чтобы потоки работали попеременно?
GameMixДата: Суббота, 21 Сентября 2013, 20:17 | Сообщение # 23
старожил
Сейчас нет на сайте
Цитата (Izaron)
Это че, билдер? *слоу*

Смотрю, не одного человека здесь зацепил Builder...
1) ТС не сказал, какую среду использует для решения задачи;
2) Если такое решение у вас вызывает фэйспалм, то объясните подробнее, почему?


Steel Standoff - 2D аркада.
Мои статьи
DeswingДата: Суббота, 21 Сентября 2013, 20:21 | Сообщение # 24
заслуженный участник
Сейчас нет на сайте
GameMix, я использую VS. Против Билдера ничего не имею, но предпочитаю использовать visual studio
IzaronДата: Суббота, 21 Сентября 2013, 20:23 | Сообщение # 25
Rammstein forever
Сейчас нет на сайте
Цитата (GameMix)
2) Если такое решение у вас вызывает фэйспалм, то объясните подробнее, почему?

Да блин, второй человек уже сегодня пристает, считаю ли я говном его любимый ЯП или компилятор, отвечаю - нет, не говно, и фейспалм не вызывает, и вообще мне пофигу, кто чем пользуется
Никогда не был технорасистом/технофашистом ("ололо, MSVS рулёз!"), тот, кто таким увлекается, просьба почитать на хабре про человека, который написал RPG на Excel

Цитата (Deswing)
Izaron, а что нужно сделать, чтобы потоки работали попеременно?

Ничего, так и должно быть, в любом случае какой-либо поток не будет печатать 10 цифр, когда второй печатает одну


Сообщение отредактировал Izaron - Суббота, 21 Сентября 2013, 20:23
НохчиДата: Суббота, 21 Сентября 2013, 20:23 | Сообщение # 26
заслуженный участник
Сейчас нет на сайте
Цитата (GameMix)
2) Если такое решение у вас вызывает фэйспалм, то объясните подробнее, почему?

Потому что работать будет только в Builder. Потому что Builder это анахронизм.
Deswing, считай что потоки работают параллельно, хотя технически это не совсем и не всегда так.
И задача двойной буферизации никак не относится к потокам. Это делается в одном единственном потоке.


Многие вопросы по Windows отпадут, если посмотреть тут
ZweifxДата: Суббота, 21 Сентября 2013, 20:25 | Сообщение # 27
был не раз
Сейчас нет на сайте
http://ru.cppreference.com/w/cpp/thread/thread/thread

/thread


Если никто не знает, это то же самое, как если бы этого не было вовсе.
DeswingДата: Суббота, 21 Сентября 2013, 20:43 | Сообщение # 28
заслуженный участник
Сейчас нет на сайте
Нохчи, значит я что-то неправильно понял??? wacko
Цитата
Двойная буферизация — в информатике метод подготовки данных, обеспечивающий возможность отдачи готового результата, без прерывания процесса подготовки следующего результата.

Из прочитанного я сделал для себя вывод, что в моей игре один поток будет делать расчеты (генерировать карту, перемещения объектов и т.п.), а второй - выводить... Как же тогда делается двойная буферизация? sad

Добавлено (21.09.2013, 20:43)
---------------------------------------------
//кстати, а если я в ф-ции не поставлю _endthread, то получится бесконечный цикл? т.е. тело ф-ции будет выполняться вплоть до завершения программы??

IzaronДата: Суббота, 21 Сентября 2013, 20:44 | Сообщение # 29
Rammstein forever
Сейчас нет на сайте
Цитата (Deswing)
Из прочитанного я сделал для себя вывод, что в моей игре один поток будет делать расчеты (генерировать карту, перемещения объектов и т.п.), а второй - выводить... Как же тогда делается двойная буферизация?

Тьфу, блин, а зачем тебе 2 потока на то, что можно в 1 поток? Вычисляешь - выводишь - вычисляешь - выводишь, как у HackTrucach
Если без потоков не обойтись (чятик, например), то их надо использовать, иначе - не надо, еще понаделаешь фигни
ZweifxДата: Суббота, 21 Сентября 2013, 20:45 | Сообщение # 30
был не раз
Сейчас нет на сайте
>двойная буферизация
Ты там на GDI пишешь или в консоли?


Если никто не знает, это то же самое, как если бы этого не было вовсе.
DeswingДата: Суббота, 21 Сентября 2013, 20:47 | Сообщение # 31
заслуженный участник
Сейчас нет на сайте
Zweifx, консоль
Izaron, приблизительно так же у меня работает прога без всяких там потоков... Но при каких-либо передвижениях элемента в массиве и обновлениях весь экран блымает, что очень раздражает. И тут же я вычитал, что выход есть - "двойная буферизация"...
GameMixДата: Суббота, 21 Сентября 2013, 20:48 | Сообщение # 32
старожил
Сейчас нет на сайте
Цитата (Izaron)
Да блин, второй человек уже сегодня пристает, считаю ли я говном его любимый ЯП или компилятор, отвечаю - нет, не говно, и фейспалм не вызывает, и вообще мне пофигу, кто чем пользуется

Никто к тебе не пристаёт. Я нигде не орал: "Builder Forever!", поэтому глупо с твоей стороны утверждать, что это "мой любимый компилятор".
А Нохчи спасибо за ответ, теперь ясно всё smile


Steel Standoff - 2D аркада.
Мои статьи
IzaronДата: Суббота, 21 Сентября 2013, 20:56 | Сообщение # 33
Rammstein forever
Сейчас нет на сайте
Цитата (GameMix)
Никто к тебе не пристаёт. Я нигде не орал: "Builder Forever!", поэтому глупо с твоей стороны утверждать, что это "мой любимый компилятор".

И я нигде не орал, что Builder это плохо, и тоже глупо было с твоей стороны спрашивать, почему билдер вызывает у меня фейспалм, и вызывает ли вообще
DeswingДата: Суббота, 21 Сентября 2013, 21:04 | Сообщение # 34
заслуженный участник
Сейчас нет на сайте
возникла больная идея создать второй массив карты, который будет дублировать первый. Т.е. первый отрисовался, второй изменился и превратился в первый... но я такой подход считаю извращенством и лищними тратами ресурсов компьютера cry
НохчиДата: Суббота, 21 Сентября 2013, 21:41 | Сообщение # 35
заслуженный участник
Сейчас нет на сайте
Deswing, для начала просто попробуй выводить через WriteConsole.

Добавлено (21.09.2013, 21:41)
---------------------------------------------
По крайней мере у меня вот такой код
Код

   char buffer[80*4];
   FillMemory(buffer, 80*4, 'A');
   HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
     
   COORD coord;
   coord.X = 0;
   coord.Y = 0;
     
   for(int i = 0; i<80*4; i++)
   {
    buffer[i] = 'B';
    SetConsoleCursorPosition(out,coord);
    WriteConsoleA(out, buffer, 80*4,0,0);
    Sleep(10);
   }
   system("pause");


Работает без всяких мерцаний.


Многие вопросы по Windows отпадут, если посмотреть тут

Сообщение отредактировал Нохчи - Суббота, 21 Сентября 2013, 21:41
ApatiДата: Суббота, 21 Сентября 2013, 21:47 | Сообщение # 36
заслуженный участник
Сейчас нет на сайте
Deswing, я тебе уже давал ответ по поводу мерцания консоли в этой теме http://gcup.ru/forum/1-32294-1
Форум игроделов » Программирование » C/C++ » Потоки?
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг