爱编程的小didi 2022-07-17 14:11 采纳率: 20%
浏览 19

标准输入缓冲区是否是互斥访问的

问题遇到的现象和发生背景

创建两个线程,从标准输入获得字符串。这两个线程会交替获得字符串。请问这种情况的 是因为程序是互斥的访问标准输入缓冲的么?

问题相关代码,请勿粘贴截图
#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;
}

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

2条回答 默认 最新

  • mzhan017 2022-07-18 08:38
    关注

    有没有试过三个线程

    评论

报告相同问题?

问题事件

  • 创建了问题 7月17日

悬赏问题

  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥20 spring boot集成mqtt的使用问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物