когда я ввожу символ, mainthread и дочерний поток все возвращают? - PullRequest
0 голосов
/ 31 августа 2018

// см. Thd code.why ребенок будет обрабатывать, c = NULL?

void* process(void* arg){
  char c = getchar();
  printf("process,c = %c\n",c);
}
int main()
{
  pthread_t tid;
  pthread_create(&tid,NULL,process,NULL);
  char c = getchar();
  printf("main,c = %c\n",c);
  pthread_join(tid,NULL);
  printf("over\n");
  return 0;
}

// и main, c имеет значение, а process, c не может иметь значение

1 Ответ

0 голосов
/ 31 августа 2018

getchar() возвращает каждый символ ввода только один раз. У вас есть два потока, которые оба вызывают getchar(). Когда персонаж прибывает, один из них возвращает этот символ, в то время как другой поток ожидает следующего символа.

...