将线程输出保存在变量中
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
家庭检查重定向。
我有一个简单的 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
家庭检查重定向。