将线程输出保存在变量中

时间:2019-12-04 12:24:16

标签: c linux multithreading sockets pthreads

我有简单的客户端/服务器应用程序。我正在使用线程。 这是我的线程示例。

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);

就像我如何将变量的输出保存在变量之类的东西中。感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

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

请参见this帖子,第一个答案。

您要传递的结构中应包含一个布尔值 execute ,这样,您就可以在主函数中检查线程是否已完全执行,因此您无需提取尚未设置的值。

答案 1 :(得分:0)

如果我理解正确,那么您实际上想保存线程的输出,将其输出到“聊天”而不是您所说的“服务器”中。尝试简单地将stdout修改为您正在谈论的聊天。检查dup系列的重定向。

相关问题