[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)icon-default.png?t=L892https://git.acwing.com/knight/thrift_lesson/-/tree/master

目录

第二天: 利用生产者消费者模型实现傻瓜版匹配机制(不按段位和匹配时间)

对客户端client.py 的操作进行完善

//生产者消费者队列

设计一下消费者进程

 设计一下生产者进程

设计一下匹配池(傻瓜版)

效果


上次客户端直接调用添加用户的函数,我们今天先增加一点可操作性,如输入 add / remove相关的操作模拟游戏的匹配/退出操作

对客户端client.py 的操作进行完善

以实现 输入相应的id和用户名, 自定义 添加/删除,

 

具体改动参见commit: finish match-client (258f260c) · 提交 · Knight bit / thrift_lesson · GitLab (acwing.com)icon-default.png?t=L892https://git.acwing.com/knight/thrift_lesson/-/commit/258f260cb77d9b24b97c72381d30dd7c538394bd

//生产者消费者队列

给匹配的服务端增加一个线程(使匹配段位相近,并控制好匹配时长)

需要为线程加锁,保证所有有关队列的操作同一时间只能有一个线程操作

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

message_queue.cv.notify_all();

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

设计一下消费者进程

 设计一下生产者进程

 

设计一下匹配池(傻瓜版)

 

具体改动参见commit: 

match-server version:2.0 (4a585f12) · 提交 · Knight bit / thrift_lesson · GitLab (acwing.com)icon-default.png?t=L892https://git.acwing.com/knight/thrift_lesson/-/commit/4a585f1249a63021bb6d79923ded7e7fbde30e35

因为用到了进程,编译完链接的时候记得加上 -pthread

g++ -c main.cpp
g++ *.o -o main -lthrift -pthread

效果

由此,我们实现了一个傻瓜版匹配机制!!(一旦匹配池出现两名玩家,就把他们匹配到一块)

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泥烟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值