C中的多线程

Ric*_*dev 2 c multithreading pthreads

我试图编写以下代码,但徒劳无功.有人可以帮忙吗?

创建一个连续循环的线程,提示用户输入一个整数.第二个线程休眠十秒钟,然后显示:到目前为止输入的最大值; .然后它又回到睡眠状态并重复.

我非常困惑和困惑.有人可以帮忙吗

到目前为止这是代码

pthread_create(&thread1, NULL, &inputfunction, NULL);
        pthread_create(&thread2,NULL, &inputfunction, NULL);
        pthread_join(thread1,NULL);
       // pthread_join(thread2,NULL);
//        pthread_mutex_init(&array_lock, NULL);
        return 0;
}

void *inputfunction()
{
        //int *values= ptr_value;
        int i;
        int arr[5];
        printf("Input values:");
        for (i=0;i<5;i++)
        scanf("%d",&arr[i]);
        sleep(10);

        int max=0;
        for (i=0;i<5;i++)
                {
                        if (arr[i]>max)
                                max=arr[i];
                }
        printf("max=",max);

        return NULL;


}
Run Code Online (Sandbox Code Playgroud)

Alo*_*ave 5

由于这似乎是作业,我不会给你写任何代码,但一点分析可能会帮助你更好地理解这个问题.

打破要求及如何分析?

你需要两个独立的线程,一个用于接收来自用户的变量并存储它,另一个线程在每10秒后唤醒并读取当前输入的值.
除了明显的事实,你需要2个线程注意强调存储读取,它意味着需要从两个不同的线程访问相同的变量,这告诉你它应该是一个全局变量.

你当前的代码有什么问题?
你有两个线程可以,但是你需要两个不同的线程函数,因为你需要在两个线程中执行不同的活动.因此你不能inputfunction()为两个线程重用相同的函数.您将需要两个不同的功能,我们已经在Q的第一部分中详细说明了每个功能应该做什么.
提示:查看环境文档(Windows/Linux等)以获取计时器,并将自己的函数注册为回调函数,这些函数实际上可以简化完全生成单独线程的需要.

此外,您需要在两个线程之间访问相同的全局变量,这意味着两个线程可以相互竞争以访问共享变量,因此您需要某种同步机制来避免这种情况.

上述分析应该让您开始编程,尝试这样做,如果您遇到任何问题,请随时在这里提出一个问题,详细说明您尝试过的内容以及您面临的确切问题.

祝一切顺利 :)