Linux 基础课 —— 6. thrift 的一些总结
作者:
M4LLKN0W
,
2021-09-30 22:50:50
,
所有人可见
,
阅读 354
Linux 基础课 —— 6. thrift
主要模块
- Thrift 接口
- match.thrift 使用 $thrift$ 独特的语法实现,主要为匹配客户端提供
add_user
和 remove_user
接口
- save.thrift 是 $AcWing$ 提供的向 myserver 服务器发送保存匹配数据的接口
- Game 匹配客户端
- 匹配客户端使用 $Python$ 语言实现,实现向匹配系统服务器发送用户操作
add_user
和 remove_user
- match_system 匹配系统
- 匹配系统
- 匹配系统版本:
- $V1.0$ 单线程处理,基本实现
add_user
和 remove_user
接口的调用
- $V2.0$ 单线程处理,实现傻瓜式匹配,即匹配池中有至少存在两个用户时直接匹配两名用户
- $V3.0$ 单线程处理,对匹配池中的所有用户按分数进行排序,每次将分数小于或等于 $50$ 的两名用户进行匹配
- $V4.0$ 将匹配系统升级为多线程处理
- $V5.0$ 多线程处理,可通过用户等待时间自动扩大匹配分差区间进行匹配
- 对锁的理解:
- 可以不妨将锁想象成一部共享的手机,$A$ 和 $B$ 两个人都可以使用它,这个手机不能同时被两个人操作。每个人都极力争取这个手机的使用权。
- $A$ 用完这个手机之后会将这个手机放回原处,$B$ 就会立即得到这个手机的使用权。
- 上述中,手机的使用权就是这个锁,$A$ 和 $B$ 就是两个不同的线程。
- 对条件变量的理解:
- 还是与上面类似的例子,有一部共享的手机,$A$ 和 $B$ 两个人都可以使用它,这个手机也不能同时被两个人操作。但是,此时有一个操作需要分别填写 $A$ 和 $B$ 两个人的信息,最后让 $A$ 提交才能操作成功。
- 于是 $A$ 填完了信息之后就将手机放回到了原处,交出了手机的使用权,并且 $A$ 会等待 $B$ 填写完信息。 这时 $B$ 就能拿起手机填写自己的信息了。$B$ 填写完之后,立马告诉告诉了 $A$,并把手机放回了原处。$A$ 拿起手机提交成功!
- 上述描述中 $A$ 填完了信息之后就将手机放回到了原处,把手机的使用权让了出去,$B$ 就能拿到手机进行操作,意思就是 $A$ 线程等待 $B$ 线程达到一个条件,对应到代码就是
message_queue.cv.wait(lck)
- 当 $B$ 填写完自己的信息之后,告诉 $A$ 我填好了,意思就是 $B$ 线程达到了这个条件,对应到代码就是
message_queue.cv.notify_all()
,用这个代码唤醒 $A$ 线程继续执行。
- 数据存储系统
如果分享中有什么地方有错误,恳请大佬指出,万分感谢!Orz
大佬,问一下最后thrift是自己能够写出来,还是跟着y总写出来就行
都行,最好有自己的理解