HP客户端怎么将异步请求变同步?
客户端发送数据后,等待数据或者超时后执行下一步。服务器必须异步,但是客户端这边要变成同步,发送请求后加个循环吗?这样好像占cpu啊,有什么好方法吗?服务端回了数据,发送数据再返回啊,这个过程可以用事件来进行同步,发送完数据就进入等待,接收到服务端回的消息后,就结束等待 fengshangren 发表于 2022-2-6 20:18
服务端回了数据,发送数据再返回啊,这个过程可以用事件来进行同步,发送完数据就进入等待,接收到服务端回 ...
我就是想知道这个等待怎么处理。
比如
方法A()
{
客户端发送数据方法(.....)//这里需要得到HP服务器返回的数据后才能下一步,而不是发送数据后
执行方法B(....)
执行方法C(....)
}
客户端发送数据方法()
{
HP客户端发送数据(.....)
等待服务器返回。。。。。这里该怎么处理?加个判断循环,取得数据后跳出循环吗?
}
我就是想知道如何等待不占CPU
本帖最后由 Fang0x378 于 2022-2-6 21:13 编辑
如果用信号灯等待的话,等待10秒,这10秒里程序是无响应状态。用判断循环等待的话,好像也会占cpu,程序也会卡住10秒
不知道专业人员怎么处理的
为什么一定要同步等待呢。。就在事件里面执行接下来的方法就行了。。
写程序就是要思维扩展开,如果这个问题不能解决,难道就一直卡着不动了??
尽管通过事件操作,可能有一点点不方便,比如一些变量数据引用不方便,但是最起码问题解决了。。
试试完成端口··· 本帖最后由 Fang0x378 于 2022-2-7 15:34 编辑
创世魂 发表于 2022-2-7 08:52
为什么一定要同步等待呢。。就在事件里面执行接下来的方法就行了。。
写程序就是要思维扩展开,如果这个问 ...
我主要是想封装一个数据库中间件。
客户端这边中间件数据库执行sql之后,调用方要能执行后马上取到记录集,如果不能变成同步的话,这个封装就没有意义了。
我的软件是CS架构,C端cha询数据库是发送一个自定义命令头给S端,S端执行cha询后把结果返回给C端。比如要cha询个人信息,那我就发送命令“cha询个人信息”到S端,S端和C端需要来回定义命令头,一端指令结构有改动,另一端也需要改动,重复的工作量太大了。如果有中间件,我可以直接在C端编写sql语句,省去了大量工作。
小小小小鸟 发表于 2022-2-7 09:29
试试完成端口···
怎么理解? Fang0x378 发表于 2022-2-7 15:35
怎么理解?
最简单的办法,循环中间加个延时(1) 一直判断~完成端口也是让你等待线程阻塞但是不占CPU,等你收到数据了,在异步事件里去触发下那个端口句柄,这样等待状态就变成触发状态了··火山PC里信号灯啊同步事件啊都行,我个人感觉完成端口开销最小,也许不对,你多看看
页:
[1]