У меня довольно странная проблема. Это не имеет решающего значения для моей работы, но я все еще хочу понять это поведение. Я выполняю три задачи в порядке их приоритета. Я вызываю одну функцию из всех этих потоков с разными аргументами. Для потока с наивысшим приоритетом (l3_thread) я получаю правильное значение для int J, но для других потоков с низким приоритетом (l2_thread) я вижу значение мусора для J. Какая концепция здесь используется?
Код:
int p_task(int limit1, int limit2, int sleep_time, int prio){
int i, j;
for(i=limit1; i<=limit2; i++)
{
j=j+1;
printf("J = %d \n", j);
}
return 0;
}
void *l3_thread(void *arg){
/*call to p_task*/
pthread_exit(NULL);
}
void *l2_thread(void *arg){
/*call to p_task*/
pthread_exit(NULL);
}