Я пишу многопоточное приложение в Linux.
В ядре нет исправлений RT, но я использую потоки с приоритетами.
При проверке времени, которое требуется для выполнения printf
, я измеряю разные значения каждый раз, когда измеряю, хотя это делается в потоке с наивысшим приоритетом:
if(clock_gettime(CLOCK_MONOTONIC, &start))
{ /* handle error */
}
for(int i=0; i< 1000; i++)
printf("hello world");
if(clock_gettime(CLOCK_MONOTONIC, &end))
{
/* handle error */
}
elapsedSeconds = TimeSpecToSeconds(&end) - TimeSpecToSeconds(&start);
Почему printf
меняет время и недетерминированным образом, то есть каждый Как следует printf
использоваться с потоками RT?
Можно ли его использовать внутри потока RT или его следует полностью избегать?
Неужели write
к диску следует обрабатывать так же, как printf
?Должен ли он использоваться только в отдельном потоке с низким приоритетом?