题目:在游戏中,有很多需要使用共享资源来处理的功能,这时候就需要单独管理进程来分配,并且按照请求有序执行资源分配,假设当前系统有X个资源,每个请求携带需要占用Y个资源,占用耗时Z秒
题目要求
- 使用gen_server实现该进程管理
- 请求资源消息,分配资源,资源不足时,返回失败,耗时结束时释放资源
- 取消资源消息,立马释放资源
题目解析
首先我们要弄清楚需要实现的需求,有一个共享资源(所有进程都能读取到)为X数量,然后每个进程向服务器请求需要Y个资源,并且每个请求耗时Z秒。假如一个进程A向服务器请求100个资源,且服务器共享资源有1000个,那服务器分配成功后就只剩下900个资源,且下一个进程读取到的是900个资源,注意题目还有一个条件是占用耗时,比如是进程A请求100个单位的资源耗时10s,意思是10s后服务器可用的共享资源要加回这100,且第三个要求说进程可以发送提前取消资源的消息,大概就是这些。
具体实现(客户端)
我们先搭建一个gen_server的框架