Как функция потока может обращаться к переменным родительского потока

Я читал, что потоки совместно используют адресное пространство памяти своего родительского потока. Если это правда, почему функция потока не может получить доступ к локальной переменной, принадлежащей ее родительскому потоку?

void* PrintVar(void* arg){
   printf( "%d\n", a);
}

int main(int argc, char*argv[]) {
   int a;
   a = 10;
   pthread_t thr;
   pthread_create( &thr, NULL, PrintVar, NULL );

}

Если поток разделяет адресное пространство, тогда функция PrintVar должна была иметь возможность распечатать значение переменной a , верно?

Я читал эту информацию на http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html

Потоки в одном процессе разделяют: Инструкции по процессу Большинство данных открытые файлы (дескрипторы) сигналы и обработчики сигналов текущий рабочий каталог Идентификатор пользователя и группы

Если это правда, то почему int a не квалифицируется как общая переменная?

Я бы хотел увидеть пример кода, в котором файловые дескрипторы используются совместно

5
задан Sharat Chandra 17 October 2010 в 05:13
поделиться