Для решения более ранней проблемы я любезно указал на многопоточность (через pthreads).
Исходная проблема такова:
У меня есть две функции, одна из которых является основной частью, которая в режиме реального времени; другая - постоянно работающая функция, которая блокирует. В режиме реального времени при попытке запуска функции блокировки выявляются очевидные блоки, что делает ее невосприимчивой к пользователю, что недопустимо в качестве процесса в реальном времени.
Первоначальная цель состояла в том, чтобы сделать функцию блокировки независимой от решения в реальном времени (или, по крайней мере, псевдо-независимой), что я попытался с помощью pthreads.
Вот упрощенная версия кода:
void * RenderImages(void * Data)
{
while(1); //Simulating a permanently blocking process
return NULL;
}
int main(int ArgC, char *ArgVar[])
{
pthread_t threads[PTHREAD_NUMBER];
void *Ptr = NULL;
int I = 0;
I = pthread_create(&threads[0], NULL, RenderImages, Ptr);
if(I != 0)
{
printf("pthread_create Error!\n");
return -1;
}
I = pthread_join(threads[0],NULL);
//Doesn't reach here as pthread_join is blocking
printf("Testing!\n");
return 0;
}
Однако приведенный выше код блокирует вызов pthread_join (что делает pthread не более чем излишне сложным способом непосредственного вызова функции - что лишает смысла точку).
Мой вопрос таков:
Какие функции я должен использовать, чтобы сделать так, чтобы я мог запустить pthread на несколько миллисекунд, приостановить процесс, затем запустить другую функцию, затем вернуться и запустить процесс еще на несколько миллисекунд и т. Д.?
OR
Если вышеупомянутое невозможно, каково решение исходной проблемы?