[linux环境] 基于thrift模拟游戏的简易匹配机制
Posted 泥烟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[linux环境] 基于thrift模拟游戏的简易匹配机制相关的知识,希望对你有一定的参考价值。
第二天: 利用生产者消费者模型实现傻瓜版匹配机制(不按段位和匹配时间)
前文回顾:
我的Git仓库
目录
第二天: 利用生产者消费者模型实现傻瓜版匹配机制(不按段位和匹配时间)
上次客户端直接调用添加用户的函数,我们今天先增加一点可操作性,如输入 add / remove相关的操作模拟游戏的匹配/退出操作
对客户端client.py 的操作进行完善
以实现 输入相应的id和用户名, 自定义 添加/删除,
//生产者消费者队列
给匹配的服务端增加一个线程(使匹配段位相近,并控制好匹配时长)
需要为线程加锁,保证所有有关队列的操作同一时间只能有一个线程操作
//在任务队列为空时, 利用条件变量,在消费者队列卡住, 直到有新的任务进来唤醒该进程才会继续执行
message_queue.cv.notify_all();
//处理完共享的变量后千万记得解锁,否则进程阻塞效率会很低
设计一下消费者进程
设计一下生产者进程
设计一下匹配池(傻瓜版)
具体改动参见commit:
因为用到了进程,编译完链接的时候记得加上 -pthread
g++ -c main.cpp
g++ *.o -o main -lthrift -pthread
效果
由此,我们实现了一个傻瓜版匹配机制!!(一旦匹配池出现两名玩家,就把他们匹配到一块)
以上是关于[linux环境] 基于thrift模拟游戏的简易匹配机制的主要内容,如果未能解决你的问题,请参考以下文章