问题遇到的现象和发生背景
创建两个线程,从标准输入获得字符串。这两个线程会交替获得字符串。请问这种情况的 是因为程序是互斥的访问标准输入缓冲的么?
问题相关代码,请勿粘贴截图
#include <stdio.h>
#include <string.h>
#include <pthread.h>
#include <time.h>
#include <windows.h>
void *InputEventTreadFunction(void *a)
{
while(1)
{
char c[10];
scanf("%s", c);
printf("%d:%s\n", *(int *)a, c);
}
return NULL;
}
int main()
{
int id1 = 1;
int id2 = 2;
pthread_t tTreadID1;
pthread_t tTreadID2;
int er = pthread_create(&tTreadID1, NULL, InputEventTreadFunction, &id1);
er = pthread_create(&tTreadID2, NULL, InputEventTreadFunction, &id2);
void* ptr;
pthread_join(tTreadID1, &ptr);
printf("tTreadID1\n");
pthread_join(tTreadID2, &ptr);
printf("tTreadID2\n");
return 0;
}