Я работаю над графическим приложением, которое выглядит примерно так:
while (Simulator.simulating)
{
Simulator.update();
InputManager.processInput();
VideoManager.draw();
}
Я делаю это несколько раз в секунду, и в подавляющем большинстве случаев мои вычисления будут занимать 90 - 99% моего времени обработки.То, что я хотел бы сделать, это вынуть функции processInput и draw и заставить каждую из них работать независимо.
Таким образом, я могу иметь поток ввода, всегда проверяющий ввод (с разумной скоростью), и отрисовкупоток пытается перерисовать с заданной частотой кадров.
Симулятор уже (внутренне) многопоточный, и нет проблем с несколькими потоками, записывающими в одни и те же данные (каждый обрабатывает сегмент).
Моя проблема в том, что я не уверен, как правильно это сделать.Как правильно инициализировать мой pthread_t и связанный с ним pthread_attr_t, чтобы поток работал без блокировки того, что я делаю?Другими словами, как я могу создать два потока, каждый из которых выполняет бесконечный цикл?
Чтобы обобщить еще больше, я пытаюсь выяснить, как это сделать:
for (int i = 0; i < threads; i++)
pthread_create(&th[i], NULL, func[i], NULL)
for (int i = 0; i < threads; i++)
pthread_join(th[i], NULL);
Где func [i] - это произвольная функция, которая выполняется в бесконечном цикле и выполняет какую-то произвольную вещь.
Любая помощь или даже ссылка приветствуются, спасибо!
Редактировать: я должен упомянуть об этомЭто интерактивный симулятор, поэтому мне нужно, чтобы два бесконечных цикла работали независимо друг от друга.Кажется, я бегу только сразу.