将线程输出保存在变量中

Save threads output in variable

我有一个简单的 client/server 应用程序。我正在使用线程。 这是我的线程的例子。

void * thread2()

    {   
        val1 = 6*a*a;
        val2 = a*a*a;

            printf("va1 = %f \n", va1);
            printf("val2 = %f \n", val2);
    }

这就是我在服务器中调用它的方式

// LEVEL 3
    if(level == 3){
    int status;
    pthread_t tid1,tid2,tid3,tid4;


    pthread_create(&tid1,NULL,thread1,NULL);
    pthread_join(tid1,NULL);
    pthread_create(&tid2,NULL,thread2,NULL);
    pthread_join(tid2,NULL);
    pthread_create(&tid3,NULL,thread3,NULL);
    pthread_join(tid3,NULL);
    pthread_create(&tid4,NULL,thread4,NULL);
    pthread_join(tid4,NULL);

    level = 4;
}

问题是所有内容都在服务器而不是聊天中打印,我不知道如何在 send() 函数中使用它

这是我的 send() 函数

的示例
s = send(newSocket, msg2, sizeof(msg2), 0);

比如我如何将线程的输出保存在变量或其他东西中。如果有任何帮助,我将不胜感激。

您可以将参数传递给您正在调用的线程。如果需要传递多个参数,请使用一个包含所有参数的结构。如果您通过引用传递,您可以在线程完成后取回结果。

thispost,第一个回答。

在你传递的结构中,你应该包含一个 bool executed,这样你就可以检查你的主函数线程是否已经完全执行,所以你不要提取尚未设置的值。

如果我没理解错的话,您实际上是想保存线程的输出,将其打印在 "chat" 上,而不是像您所说的那样打印在 "server" 上。尝试简单地将 stdout 修改为您正在谈论的聊天。使用 dup 家庭检查重定向。