Я читал, что потоки совместно используют адресное пространство памяти своего родительского потока. Если это правда, почему функция потока не может получить доступ к локальной переменной, принадлежащей ее родительскому потоку?
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
не квалифицируется как общая переменная?
Я бы хотел увидеть пример кода, в котором файловые дескрипторы используются совместно