Linux|[linux环境] 基于thrift模拟游戏的简易匹配机制(二)

第二天: 利用生产者消费者模型实现傻瓜版匹配机制(不按段位和匹配时间)
前文回顾:
[linux环境] 基于thrift模拟游戏的简易匹配机制(一)_☆迷茫狗子的秘密基地☆-CSDN博客thrift官方文档Apache Thrift - Homehttps://thrift.apache.org/我的Git仓库文件 · master · Knight bit / thrift_lesson · GitLab (acwing.com)https://git.acwing.com/knight/thrift_lesson/-/tree/master注意:不会事无巨细,只是记录一下大致的流程,感悟目录第一天:实现匹配的客户端(game)和服务端(match..https://blog.csdn.net/qq_39391544/article/details/120585704
我的Git仓库
文件 · master · Knight bit / thrift_lesson · GitLab (acwing.com)Linux|[linux环境] 基于thrift模拟游戏的简易匹配机制(二)
文章图片
https://git.acwing.com/knight/thrift_lesson/-/tree/master

目录
第二天: 利用生产者消费者模型实现傻瓜版匹配机制(不按段位和匹配时间)
对客户端client.py 的操作进行完善
//生产者消费者队列
设计一下消费者进程
设计一下生产者进程
设计一下匹配池(傻瓜版)
效果
上次客户端直接调用添加用户的函数,我们今天先增加一点可操作性,如输入 add / remove相关的操作模拟游戏的匹配/退出操作
对客户端client.py 的操作进行完善 以实现 输入相应的id和用户名, 自定义 添加/删除,
Linux|[linux环境] 基于thrift模拟游戏的简易匹配机制(二)
文章图片

Linux|[linux环境] 基于thrift模拟游戏的简易匹配机制(二)
文章图片


具体改动参见commit: finish match-client (258f260c) · 提交 · Knight bit / thrift_lesson · GitLab (acwing.com)Linux|[linux环境] 基于thrift模拟游戏的简易匹配机制(二)
文章图片
https://git.acwing.com/knight/thrift_lesson/-/commit/258f260cb77d9b24b97c72381d30dd7c538394bd

//生产者消费者队列 给匹配的服务端增加一个线程(使匹配段位相近,并控制好匹配时长)
需要为线程加锁,保证所有有关队列的操作同一时间只能有一个线程操作

//在任务队列为空时,利用条件变量,在消费者队列卡住, 直到有新的任务进来唤醒该进程才会继续执行

message_queue.cv.notify_all();

//处理完共享的变量后千万记得解锁,否则进程阻塞效率会很低


设计一下消费者进程 Linux|[linux环境] 基于thrift模拟游戏的简易匹配机制(二)
文章图片

设计一下生产者进程 Linux|[linux环境] 基于thrift模拟游戏的简易匹配机制(二)
文章图片


设计一下匹配池(傻瓜版) Linux|[linux环境] 基于thrift模拟游戏的简易匹配机制(二)
文章图片


具体改动参见commit:
match-server version:2.0 (4a585f12) · 提交 · Knight bit / thrift_lesson · GitLab (acwing.com)Linux|[linux环境] 基于thrift模拟游戏的简易匹配机制(二)
文章图片
https://git.acwing.com/knight/thrift_lesson/-/commit/4a585f1249a63021bb6d79923ded7e7fbde30e35
【Linux|[linux环境] 基于thrift模拟游戏的简易匹配机制(二)】因为用到了进程,编译完链接的时候记得加上 -pthread
g++ -c main.cpp g++ *.o -o main -lthrift -pthread


效果 由此,我们实现了一个傻瓜版匹配机制!!(一旦匹配池出现两名玩家,就把他们匹配到一块)
Linux|[linux环境] 基于thrift模拟游戏的简易匹配机制(二)
文章图片


    推荐阅读