我一直致力于一项任务,要求我们实施一些提供给我们的代码,允许创建可以进行通信的服务器和客户端。我是在main中分叉一个进程,然后测试可用的各种请求选项,然后测量通过子进程或本地使用函数执行此操作所花费的时间差。我不确定我是否正确地解释了这些要求。除此之外,所有定时功能都返回0秒。不确定这是否正确。我会发布一小部分代码。
家庭作业陈述(只占一小部分):
测量请求的调用延迟(即,请求之间的时间) 调用请求直到响应回来。)比较一下 有时间将相同的请求字符串提交给一个函数 接受请求并返回回复(与单独的进程相比) 这样做)。提交一份比较两者的报告。
在main之前声明的函数:
string myfunc(string request){
//string myreq = request;
RequestChannel my_func_channel("control", RequestChannel::CLIENT_SIDE);
string reply1 = my_func_channel.send_request(request);
return reply1;
}
我如何解释代码中的方向:
int main(int argc, char * argv[]) {
//time variables
time_t start, end;
double time_req_1, time_req_func;
cout << "client.C Starting...\n" << flush;
cout << "Forking new process...\n " << flush;
pid_t childpid = fork();
if(childpid == -1)
cout << "Failed to fork.\n" << flush;
else if(childpid == 0){
cout << "***Loading Dataserver...\n" << flush;
//Load dataserver
RequestChannel my_channel("control", RequestChannel::CLIENT_SIDE);
cout << "***Dataserver Loaded.\n" << flush;
time(&start);
string reply1 = my_channel.send_request("hello");
cout << "***Reply to request 'hello' is '" << reply1 << "'\n" << flush;
time(&end);
time_req_1 = difftime(end,start);
cout <<"\n\nRequest 1 took : "<< time_req_1 << flush;
}
else{//parent
time(&start);
string s = myfunc("hello");
time(&end);
time_req_func = difftime(end,start);
cout <<"\nmyfunc Request took: "<< time_req_func << "\n" << flush;
}
usleep(1000000);
}
这是我的代码的缩写版本,但包含了解最新情况所需的一切。我完成了指示吗?另外,我的0秒结果可能是正确的吗?
答案 0 :(得分:0)
一次这样做所花费的时间可能(可能)太小而无法测量,因此需要花多长时间才能完成它多长时间,然后确定每个人花多长时间。