Если я определю функцию потока, которая повторно использует другую функцию, которую также использует основной поток .... возможно ли, что может быть условие гонки?Распределены ли локальные переменные в одной и той же функции между потоками?В этом случае функция do_work используется как в потоке thread_one, так и в основном потоке.Может ли локальная переменная x в функции do_work быть изменена обоими потоками, чтобы получить неожиданный результат?
void *thread_one() {
int x = 0;
int result;
while(1) {
for(x=0; x<10; x++) {
result = do_work(x);
}
printf("THREAD: result: %i\n", result);
}
}
int do_work(int x) {
x = x + 5;
return x;
}
int main(int argc, char**argv) {
pthread_t the_thread;
if( (rc1 = pthread_create( &the_thread, NULL, thread_one, NULL)) ) {
printf("failed to create thread %i\n", rc1);
exit(1);
}
int i = 0;
int result = 0;
while(1) {
for(i=0; i<12; i+=2) {
result = do_work(i);
}
printf("MAIN: result %i\n", result);
}
return 0;
}