论坛
BBS
空间测绘
发表
发布文章
提问答疑
搜索
您还未登录
登录后即可体验更多功能
立即登录
我的收藏
提问答疑
我要投稿
Web安全
[25501] 2016-09-18_使用Python和Asyncio编写在线多用人游戏(二)
文档创建者:
s7ckTeam
浏览次数:
5
最后更新:
2025-01-19
Web安全
5 人阅读
|
0 人回复
s7ckTeam
s7ckTeam
当前离线
积分
-56
6万
主题
-6万
回帖
-56
积分
管理员
积分
-56
发消息
2016-09-18_使用Python和Asyncio编写在线多用人游戏(二)
使
用
P
y
t
h
o
n
和
A
s
y
n
c
i
o
编
写
在
线
多
用
人
游
戏
(
二
)
原
创
译
者
c
h
u
n
y
a
n
g
-
w
e
n
L
i
n
u
x
中
国
2
0
1
6
-
0
9
-
1
8
你
在
P
y
t
h
o
n
中
用
过
异
步
编
程
吗
?
本
文
中
我
会
告
诉
你
怎
样
做
,
而
且
用
一
个
能
工
作
的
例
子
[
1
]
来
展
示
它
:
这
是
一
个
流
行
的
贪
吃
蛇
游
戏
,
而
且
是
为
多
人
游
戏
而
设
计
的
。
介
绍
和
理
论
部
分
参
见
“
第
一
部
分
异
步
化
”
。
游
戏
入
口
在
此
,
点
此
体
验
[
2
]
。
3
、
编
写
游
戏
循
环
主
体
、
编
写
游
戏
循
环
主
体
游
戏
循
环
是
每
一
个
游
戏
的
核
心
。
它
持
续
地
运
行
以
读
取
玩
家
的
输
入
、
更
新
游
戏
的
状
态
,
并
且
在
屏
幕
上
渲
染
游
戏
结
果
。
在
在
线
游
戏
中
,
游
戏
循
环
分
为
客
户
端
和
服
务
端
两
部
分
,
所
以
一
般
有
两
个
循
环
通
过
网
络
通
信
。
通
常
客
户
端
的
角
色
是
获
取
玩
家
输
入
,
比
如
按
键
或
者
鼠
标
移
动
,
将
数
据
传
输
给
服
务
端
,
然
后
接
收
需
要
渲
染
的
数
据
。
服
务
端
处
理
来
自
玩
家
的
所
有
数
据
,
更
新
游
戏
的
状
态
,
执
行
渲
染
下
一
帧
的
必
要
计
算
,
然
后
将
结
果
传
回
客
户
端
,
例
如
游
戏
中
对
象
的
新
位
置
。
如
果
没
有
可
靠
的
理
由
,
不
混
淆
客
户
端
和
服
务
端
的
角
色
是
一
件
很
重
要
的
事
。
如
果
你
在
客
户
端
执
行
游
戏
逻
辑
的
计
算
,
很
容
易
就
会
和
其
它
客
户
端
失
去
同
步
,
其
实
你
的
游
戏
也
可
以
通
过
简
单
地
传
递
客
户
端
的
数
据
来
创
建
。
游
戏
循
环
的
一
次
迭
代
称
为
一
个
t
i
c
k
嘀
嗒
。
嘀
嗒
是
一
个
事
件
,
表
示
当
前
游
戏
循
环
的
迭
代
已
经
结
束
,
下
一
帧
(
或
者
多
帧
)
的
数
据
已
经
就
绪
。
在
后
面
的
例
子
中
,
我
们
使
用
相
同
的
客
户
端
,
它
使
用
W
e
b
S
o
c
k
e
t
从
一
个
网
页
上
连
接
到
服
务
端
。
它
执
行
一
个
简
单
的
循
环
,
将
按
键
码
发
送
给
服
务
端
,
并
显
示
来
自
服
务
端
的
所
有
信
息
。
客
户
端
代
码
戳
这
里
[
3
]
。
例
子
例
子
3
.
1
:
基
本
游
戏
循
环
:
基
本
游
戏
循
环
例
子
3
.
1
源
码
[
4
]
。
我
们
使
用
a
i
o
h
t
t
p
[
5
]
库
来
创
建
游
戏
服
务
器
。
它
可
以
通
过
a
s
y
n
c
i
o
创
建
网
页
服
务
器
和
客
户
端
。
这
个
库
的
一
个
优
势
是
它
同
时
支
持
普
通
h
t
t
p
请
求
和
w
e
b
s
o
c
k
e
t
。
所
以
我
们
不
用
其
他
网
页
服
务
器
来
渲
染
游
戏
的
h
t
m
l
页
面
。
下
面
是
启
动
服
务
器
的
方
法
:
3
.
5
.
8
.
是
创
建
服
务
主
任
务
的
快
捷
方
法
,
通
过
它
的
方
法
来
执
行
事
件
循
环
。
建
议
你
查
看
这
个
方
法
的
源
码
,
弄
清
楚
服
务
器
到
底
是
如
何
创
建
和
结
束
的
。
变
量
就
是
一
个
类
似
于
字
典
的
对
象
,
它
用
于
在
所
连
接
的
客
户
端
之
间
共
享
数
据
。
我
们
使
用
它
来
存
储
连
接
的
套
接
字
的
列
表
。
随
后
会
用
这
个
列
表
来
给
所
有
连
接
的
客
户
端
发
送
消
息
。
1
.
a
p
p
=
w
e
b
.
A
p
p
l
i
c
a
t
i
o
n
(
)
2
.
a
p
p
[
"
s
o
c
k
e
t
s
"
]
=
[
]
4
.
a
s
y
n
c
i
o
.
e
n
s
u
r
e
_
f
u
t
u
r
e
(
g
a
m
e
_
l
o
o
p
(
a
p
p
)
)
6
.
a
p
p
.
r
o
u
t
e
r
.
a
d
d
_
r
o
u
t
e
(
'
G
E
T
'
,
'
/
c
o
n
n
e
c
t
'
,
w
s
h
a
n
d
l
e
r
)
7
.
a
p
p
.
r
o
u
t
e
r
.
a
d
d
_
r
o
u
t
e
(
'
G
E
T
'
,
'
/
'
,
h
a
n
d
l
e
)
9
.
w
e
b
.
r
u
n
_
a
p
p
(
a
p
p
)
w
e
b
.
r
u
n
_
a
p
p
r
u
n
_
f
o
r
e
v
e
r
(
)
a
s
y
n
c
i
o
a
p
p
a
s
y
n
c
i
o
.
e
n
s
u
r
e
_
f
u
t
u
r
e
(
)
调
用
会
启
动
主
游
戏
循
环
的
任
务
,
每
隔
2
秒
向
客
户
端
发
送
嘀
嗒
消
息
。
这
个
任
务
会
在
同
样
的
a
s
y
n
c
i
o
事
件
循
环
中
和
网
页
服
务
器
并
行
执
行
。
有
两
个
网
页
请
求
处
理
器
:
是
提
供
h
t
m
l
页
面
的
处
理
器
;
是
主
要
的
w
e
b
s
o
c
k
e
t
服
务
器
任
务
,
处
理
和
客
户
端
之
间
的
交
互
。
在
事
件
循
环
中
,
每
一
个
连
接
的
客
户
端
都
会
创
建
一
个
新
的
任
务
。
这
个
任
务
会
添
加
客
户
端
的
套
接
字
到
列
表
中
,
以
便
任
务
可
以
给
所
有
的
客
户
端
发
送
消
息
。
然
后
它
将
随
同
消
息
回
显
客
户
端
的
每
个
击
键
。
在
启
动
的
任
务
中
,
我
们
在
的
主
事
件
循
环
中
启
动
w
o
r
k
e
r
循
环
。
任
务
之
间
的
切
换
发
生
在
它
们
之
间
任
何
一
个
使
用
语
句
来
等
待
某
个
协
程
结
束
时
。
例
如
仅
仅
是
将
程
序
执
行
权
交
给
调
度
器
一
段
指
定
的
时
间
;
等
待
w
e
b
s
o
c
k
e
t
的
消
息
,
此
时
调
度
器
可
能
切
换
到
其
它
任
务
。
在
浏
览
器
中
打
开
主
页
,
连
接
上
服
务
器
后
,
试
试
随
便
按
下
键
。
它
们
的
键
值
会
从
服
务
端
返
回
,
每
隔
2
秒
这
个
数
字
会
被
游
戏
循
环
中
发
给
所
有
客
户
端
的
嘀
嗒
消
息
所
覆
盖
。
我
们
刚
刚
创
建
了
一
个
处
理
客
户
端
按
键
的
服
务
器
,
主
游
戏
循
环
在
后
台
做
一
些
处
理
,
周
期
性
地
同
时
更
新
所
有
的
客
户
端
。
例
子
例
子
3
.
2
:
根
据
请
求
启
动
游
戏
根
据
请
求
启
动
游
戏
例
子
3
.
2
的
源
码
[
6
]
在
前
一
个
例
子
中
,
在
服
务
器
的
生
命
周
期
内
,
游
戏
循
环
一
直
运
行
着
。
但
是
现
实
中
,
如
果
没
有
一
个
人
连
接
服
务
器
,
空
运
行
游
戏
循
环
通
常
是
不
合
理
的
。
而
且
,
同
一
个
服
务
器
上
可
能
有
不
同
的
“
游
戏
房
间
”
。
在
这
种
假
设
下
,
每
一
个
玩
家
“
创
建
”
一
个
游
戏
会
话
(
比
如
说
,
多
人
游
戏
中
的
一
个
比
赛
或
者
大
型
多
人
游
戏
中
的
副
本
)
,
这
样
其
他
用
户
可
以
加
入
其
中
。
当
游
戏
会
话
开
始
时
,
游
戏
循
环
才
开
始
执
行
。
在
这
个
例
子
中
,
我
们
使
用
一
个
全
局
标
记
来
检
测
游
戏
循
环
是
否
在
执
行
。
当
第
一
个
用
户
发
起
连
接
时
,
启
动
它
。
最
开
始
,
游
戏
循
环
没
有
执
行
,
标
记
设
置
为
。
游
戏
循
环
是
通
过
客
户
端
的
处
理
方
法
启
动
的
。
当
运
行
时
,
这
个
标
记
设
置
为
a
s
y
n
c
i
o
.
e
n
s
u
r
e
_
f
u
t
u
r
e
(
)
h
a
n
d
l
e
w
s
h
a
n
d
l
e
r
w
s
h
a
n
d
l
e
r
g
a
m
e
_
l
o
o
p
a
s
y
n
c
i
o
a
w
a
i
t
a
s
y
n
c
i
o
.
s
l
e
e
p
w
s
.
r
e
c
e
i
v
e
F
a
l
s
e
1
.
i
f
a
p
p
[
"
g
a
m
e
_
i
s
_
r
u
n
n
i
n
g
"
]
=
=
F
a
l
s
e
:
2
.
a
s
y
n
c
i
o
.
e
n
s
u
r
e
_
f
u
t
u
r
e
(
g
a
m
e
_
l
o
o
p
(
a
p
p
)
)
g
a
m
e
_
l
o
o
p
(
)
T
r
u
e
;
当
所
有
客
户
端
都
断
开
连
接
时
,
其
又
被
设
置
为
。
例
子
例
子
3
.
3
:
管
理
任
务
:
管
理
任
务
例
子
3
.
3
源
码
[
7
]
这
个
例
子
用
来
解
释
如
何
和
任
务
对
象
协
同
工
作
。
我
们
把
游
戏
循
环
的
任
务
直
接
存
储
在
游
戏
循
环
的
全
局
字
典
中
,
代
替
标
记
的
使
用
。
在
像
这
样
的
一
个
简
单
例
子
中
并
不
一
定
是
最
优
的
,
但
是
有
时
候
你
可
能
需
要
控
制
所
有
已
经
启
动
的
任
务
。
这
里
返
回
我
们
存
放
在
全
局
字
典
中
的
任
务
对
象
,
当
所
有
用
户
都
断
开
连
接
时
,
我
们
使
用
下
面
方
式
取
消
任
务
:
这
个
调
用
将
通
知
调
度
器
不
要
向
这
个
协
程
传
递
执
行
权
,
而
且
将
它
的
状
态
设
置
为
已
取
消
:
,
之
后
可
以
通
过
方
法
来
检
查
是
否
已
取
消
。
这
里
有
一
个
值
得
一
提
的
小
注
意
点
:
当
你
持
有
一
个
任
务
对
象
的
外
部
引
用
时
,
而
这
个
任
务
执
行
中
发
生
了
异
常
,
这
个
异
常
不
会
抛
出
。
取
而
代
之
的
是
为
这
个
任
务
设
置
一
个
异
常
状
态
,
可
以
通
过
方
法
来
检
查
是
否
出
现
了
异
常
。
这
种
悄
无
声
息
地
失
败
在
调
试
时
不
是
很
有
用
。
所
以
,
你
可
能
想
用
抛
出
所
有
异
常
来
取
代
这
种
做
法
。
你
可
以
对
所
有
未
完
成
的
任
务
显
式
地
调
用
来
实
现
。
可
以
通
过
如
下
的
回
调
来
实
现
:
如
果
我
们
打
算
在
我
们
代
码
中
取
消
这
个
任
务
,
但
是
又
不
想
产
生
异
常
,
有
一
个
检
查
F
a
l
s
e
1
.
i
f
a
p
p
[
"
g
a
m
e
_
l
o
o
p
"
]
i
s
N
o
n
e
o
r
2
.
a
p
p
[
"
g
a
m
e
_
l
o
o
p
"
]
.
c
a
n
c
e
l
l
e
d
(
)
:
3
.
a
p
p
[
"
g
a
m
e
_
l
o
o
p
"
]
=
a
s
y
n
c
i
o
.
e
n
s
u
r
e
_
f
u
t
u
r
e
(
g
a
m
e
_
l
o
o
p
(
a
p
p
)
)
e
n
s
u
r
e
_
f
u
t
u
r
e
(
)
1
.
a
p
p
[
"
g
a
m
e
_
l
o
o
p
"
]
.
c
a
n
c
e
l
(
)
c
a
n
c
e
l
(
)
c
a
n
c
e
l
l
e
d
c
a
n
c
e
l
l
e
d
(
)
e
x
c
e
p
t
i
o
n
(
)
r
e
s
u
l
t
(
)
1
.
a
p
p
[
"
g
a
m
e
_
l
o
o
p
"
]
.
a
d
d
_
d
o
n
e
_
c
a
l
l
b
a
c
k
(
l
a
m
b
d
a
t
:
t
.
r
e
s
u
l
t
(
)
)
C
a
n
c
e
l
E
r
r
o
r
c
a
n
c
e
l
l
e
d
状
态
的
点
:
注
意
仅
当
你
持
有
任
务
对
象
的
引
用
时
才
需
要
这
么
做
。
在
前
一
个
例
子
,
所
有
的
异
常
都
是
没
有
额
外
的
回
调
,
直
接
抛
出
所
有
异
常
。
例
子
例
子
3
.
4
:
等
待
多
个
事
件
:
等
待
多
个
事
件
例
子
3
.
4
源
码
[
8
]
在
许
多
场
景
下
,
在
客
户
端
的
处
理
方
法
中
你
需
要
等
待
多
个
事
件
的
发
生
。
除
了
来
自
客
户
端
的
消
息
,
你
可
能
需
要
等
待
不
同
类
型
事
件
的
发
生
。
比
如
,
如
果
你
的
游
戏
时
间
有
限
制
,
那
么
你
可
能
需
要
等
一
个
来
自
定
时
器
的
信
号
。
或
者
你
需
要
使
用
管
道
来
等
待
来
自
其
它
进
程
的
消
息
。
亦
或
者
是
使
用
分
布
式
消
息
系
统
的
网
络
中
其
它
服
务
器
的
信
息
。
为
了
简
单
起
见
,
这
个
例
子
是
基
于
例
子
3
.
1
。
但
是
这
个
例
子
中
我
们
使
用
对
象
来
与
已
连
接
的
客
户
端
保
持
游
戏
循
环
的
同
步
。
我
们
不
保
存
套
接
字
的
全
局
列
表
,
因
为
只
在
该
处
理
方
法
中
使
用
套
接
字
。
当
游
戏
循
环
停
止
迭
代
时
,
我
们
使
用
方
法
来
通
知
所
有
的
客
户
端
。
这
个
方
法
允
许
在
的
事
件
循
环
中
使
用
发
布
/
订
阅
的
模
式
。
为
了
等
待
这
两
个
事
件
,
首
先
我
们
使
用
来
封
装
任
务
中
这
个
可
等
待
对
象
。
在
我
们
调
用
之
前
,
我
们
需
要
在
它
后
面
获
取
一
把
锁
。
这
就
是
我
们
为
什
么
先
调
用
的
原
因
。
在
调
用
之
后
,
锁
会
被
释
放
,
这
样
其
他
的
协
程
也
可
以
使
用
它
。
但
是
当
我
们
收
到
通
知
时
,
会
重
新
获
取
锁
,
所
以
在
收
到
通
知
后
需
要
调
用
1
.
a
p
p
[
"
g
a
m
e
_
l
o
o
p
"
]
.
a
d
d
_
d
o
n
e
_
c
a
l
l
b
a
c
k
(
l
a
m
b
d
a
t
:
t
.
r
e
s
u
l
t
(
)
2
.
i
f
n
o
t
t
.
c
a
n
c
e
l
l
e
d
(
)
e
l
s
e
N
o
n
e
)
C
o
n
d
i
t
i
o
n
C
o
n
d
i
t
i
o
n
.
n
o
t
i
f
y
_
a
l
l
(
)
a
s
y
n
c
i
o
e
n
s
u
r
e
_
f
u
t
u
r
e
(
)
1
.
i
f
n
o
t
r
e
c
v
_
t
a
s
k
:
2
.
r
e
c
v
_
t
a
s
k
=
a
s
y
n
c
i
o
.
e
n
s
u
r
e
_
f
u
t
u
r
e
(
w
s
.
r
e
c
e
i
v
e
(
)
)
3
.
i
f
n
o
t
t
i
c
k
_
t
a
s
k
:
4
.
a
w
a
i
t
t
i
c
k
.
a
c
q
u
i
r
e
(
)
5
.
t
i
c
k
_
t
a
s
k
=
a
s
y
n
c
i
o
.
e
n
s
u
r
e
_
f
u
t
u
r
e
(
t
i
c
k
.
w
a
i
t
(
)
)
C
o
n
d
i
t
i
o
n
.
w
a
i
t
(
)
t
i
c
k
.
a
c
q
u
i
r
e
(
)
t
i
c
k
.
w
a
i
t
(
)
t
i
c
k
.
r
e
l
e
a
s
e
(
)
来
释
放
它
。
我
们
使
用
协
程
来
等
待
两
个
任
务
。
程
序
会
阻
塞
,
直
到
列
表
中
的
任
意
一
个
任
务
完
成
。
然
后
它
返
回
两
个
列
表
:
执
行
完
成
的
任
务
列
表
和
仍
然
在
执
行
的
任
务
列
表
。
如
果
任
务
执
行
完
成
了
,
其
对
应
变
量
赋
值
为
,
所
以
在
下
一
个
迭
代
时
,
它
可
能
会
被
再
次
创
建
。
例
子
例
子
3
.
5
:
:
结
合
多
个
线
程
结
合
多
个
线
程
例
子
3
.
5
源
码
[
9
]
在
这
个
例
子
中
,
我
们
结
合
循
环
和
线
程
,
在
一
个
单
独
的
线
程
中
执
行
主
游
戏
循
环
。
我
之
前
提
到
过
,
由
于
的
存
在
,
P
y
t
h
o
n
代
码
的
真
正
并
行
执
行
是
不
可
能
的
。
所
以
使
用
其
它
线
程
来
执
行
复
杂
计
算
并
不
是
一
个
好
主
意
。
然
而
,
在
使
用
时
结
合
线
程
有
原
因
的
:
当
我
们
使
用
的
其
它
库
不
支
持
时
就
需
要
。
在
主
线
程
中
调
用
这
些
库
会
阻
塞
循
环
的
执
行
,
所
以
异
步
使
用
他
们
的
唯
一
方
法
是
在
不
同
的
线
程
中
使
用
他
们
。
我
们
使
用
循
环
的
方
法
和
来
执
行
游
戏
循
环
。
注
意
已
经
不
再
是
一
个
协
程
了
。
它
是
一
个
由
其
它
线
程
执
行
的
函
数
。
然
而
我
们
需
要
和
主
线
程
交
互
,
在
游
戏
事
件
到
来
时
通
知
客
户
端
。
本
身
不
是
线
程
安
全
的
,
它
提
供
了
可
以
在
其
它
线
程
中
执
行
你
的
代
码
的
方
法
。
普
通
函
数
有
,
协
程
有
。
我
们
在
a
s
y
n
c
i
o
.
w
a
i
t
(
)
1
.
d
o
n
e
,
p
e
n
d
i
n
g
=
a
w
a
i
t
a
s
y
n
c
i
o
.
w
a
i
t
(
2
.
[
r
e
c
v
_
t
a
s
k
,
3
.
t
i
c
k
_
t
a
s
k
]
,
4
.
r
e
t
u
r
n
_
w
h
e
n
=
a
s
y
n
c
i
o
.
F
I
R
S
T
_
C
O
M
P
L
E
T
E
D
)
N
o
n
e
a
s
y
n
c
i
o
G
I
L
a
s
y
n
c
i
o
a
s
y
n
c
i
o
a
s
y
n
c
i
o
r
u
n
_
i
n
_
e
x
e
c
u
t
o
r
(
)
T
h
r
e
a
d
P
o
o
l
E
x
e
c
u
t
o
r
g
a
m
e
_
l
o
o
p
(
)
a
s
y
n
c
i
o
c
a
l
l
_
s
o
o
n
_
t
h
r
e
a
d
s
a
f
e
(
)
r
u
n
_
c
o
r
o
u
t
i
n
e
_
t
h
r
e
a
d
s
a
f
e
(
)
n
o
t
i
f
y
(
)
协
程
中
增
加
了
通
知
客
户
端
游
戏
的
嘀
嗒
的
代
码
,
然
后
通
过
另
外
一
个
线
程
执
行
主
事
件
循
环
。
8
.
当
你
执
行
这
个
例
子
时
,
你
会
看
到
“
N
o
t
i
f
y
t
h
r
e
a
d
i
d
”
和
“
M
a
i
n
t
h
r
e
a
d
i
d
”
相
等
,
因
为
协
程
在
主
线
程
中
执
行
。
与
此
同
时
在
另
外
一
个
线
程
中
执
行
,
因
此
它
不
会
阻
塞
主
事
件
循
环
。
例
子
例
子
3
.
6
:
多
进
程
和
扩
展
:
多
进
程
和
扩
展
例
子
3
.
6
源
码
[
1
0
]
单
线
程
的
服
务
器
可
能
运
行
得
很
好
,
但
是
它
只
能
使
用
一
个
C
P
U
核
。
为
了
将
服
务
扩
展
到
多
核
,
我
们
需
要
执
行
多
个
进
程
,
每
个
进
程
执
行
各
自
的
事
件
循
环
。
这
样
我
们
需
要
在
进
程
间
交
互
信
息
或
者
共
享
游
戏
的
数
据
。
而
且
在
一
个
游
戏
中
经
常
需
要
进
行
复
杂
的
计
算
,
例
如
路
径
查
找
之
类
。
这
些
任
务
有
时
候
在
一
个
游
戏
嘀
嗒
中
没
法
快
速
完
成
。
在
协
程
中
不
推
荐
进
行
费
时
的
计
算
,
因
为
它
会
阻
塞
事
件
的
处
理
。
在
这
种
情
况
下
,
将
这
个
复
杂
任
务
交
给
其
它
并
行
执
行
的
进
程
可
能
更
合
理
。
最
简
单
的
使
用
多
个
核
的
方
法
是
启
动
多
个
使
用
单
核
的
服
务
器
,
就
像
之
前
的
例
子
中
一
样
,
每
个
服
务
器
占
用
不
同
的
端
口
。
你
可
以
使
用
或
者
其
它
进
程
控
制
的
系
统
。
这
个
时
候
你
需
要
一
个
像
这
样
的
负
载
均
衡
器
,
使
得
连
接
的
客
户
端
分
布
在
多
个
进
程
间
。
已
经
有
一
些
可
以
连
接
a
s
y
n
c
i
o
和
一
些
流
行
的
消
息
及
存
储
系
统
的
适
配
系
统
。
例
如
:
a
i
o
m
c
a
c
h
e
[
1
1
]
用
于
m
e
m
c
a
c
h
e
d
客
户
端
1
.
d
e
f
g
a
m
e
_
l
o
o
p
(
a
s
y
n
c
i
o
_
l
o
o
p
)
:
2
.
p
r
i
n
t
(
"
G
a
m
e
l
o
o
p
t
h
r
e
a
d
i
d
{
}
"
.
f
o
r
m
a
t
(
t
h
r
e
a
d
i
n
g
.
g
e
t
_
i
d
e
n
t
(
)
)
)
3
.
a
s
y
n
c
d
e
f
n
o
t
i
f
y
(
)
:
4
.
p
r
i
n
t
(
"
N
o
t
i
f
y
t
h
r
e
a
d
i
d
{
}
"
.
f
o
r
m
a
t
(
t
h
r
e
a
d
i
n
g
.
g
e
t
_
i
d
e
n
t
(
)
)
)
5
.
a
w
a
i
t
t
i
c
k
.
a
c
q
u
i
r
e
(
)
6
.
t
i
c
k
.
n
o
t
i
f
y
_
a
l
l
(
)
7
.
t
i
c
k
.
r
e
l
e
a
s
e
(
)
9
.
w
h
i
l
e
1
:
1
0
.
t
a
s
k
=
a
s
y
n
c
i
o
.
r
u
n
_
c
o
r
o
u
t
i
n
e
_
t
h
r
e
a
d
s
a
f
e
(
n
o
t
i
f
y
(
)
,
a
s
y
n
c
i
o
_
l
o
o
p
)
1
1
.
#
b
l
o
c
k
i
n
g
t
h
e
t
h
r
e
a
d
1
2
.
s
l
e
e
p
(
1
)
1
3
.
#
m
a
k
e
s
u
r
e
t
h
e
t
a
s
k
h
a
s
f
i
n
i
s
h
e
d
1
4
.
t
a
s
k
.
r
e
s
u
l
t
(
)
n
o
t
i
f
y
(
)
s
l
e
e
p
(
1
)
s
u
p
e
r
v
i
s
o
r
d
H
A
P
r
o
x
y
a
i
o
z
m
q
[
1
2
]
用
于
z
e
r
o
M
Q
a
i
o
r
e
d
i
s
[
1
3
]
用
于
R
e
d
i
s
存
储
,
支
持
发
布
/
订
阅
你
可
以
在
g
i
t
h
u
b
或
者
p
y
p
i
上
找
到
其
它
的
软
件
包
,
大
部
分
以
开
头
。
使
用
网
络
服
务
在
存
储
持
久
状
态
和
交
换
某
些
信
息
时
可
能
比
较
有
效
。
但
是
如
果
你
需
要
进
行
进
程
间
通
信
的
实
时
处
理
,
它
的
性
能
可
能
不
足
。
此
时
,
使
用
标
准
的
u
n
i
x
管
道
可
能
更
合
适
。
支
持
管
道
,
在
仓
库
有
个
使
用
管
道
的
服
务
器
的
非
常
底
层
的
例
子
[
1
4
]
。
在
当
前
的
例
子
中
,
我
们
使
用
P
y
t
h
o
n
的
高
层
类
库
m
u
l
t
i
p
r
o
c
e
s
s
i
n
g
[
1
5
]
来
在
不
同
的
核
上
启
动
复
杂
的
计
算
,
使
用
来
进
行
进
程
间
的
消
息
交
互
。
不
幸
的
是
,
当
前
的
实
现
与
不
兼
容
。
所
以
每
一
个
阻
塞
方
法
的
调
用
都
会
阻
塞
事
件
循
环
。
但
是
此
时
线
程
正
好
可
以
起
到
帮
助
作
用
,
因
为
如
果
在
不
同
线
程
里
面
执
行
的
代
码
,
它
就
不
会
阻
塞
主
线
程
。
所
有
我
们
需
要
做
的
就
是
把
所
有
进
程
间
的
通
信
放
到
另
外
一
个
线
程
中
去
。
这
个
例
子
会
解
释
如
何
使
用
这
个
方
法
。
和
上
面
的
多
线
程
例
子
非
常
类
似
,
但
是
我
们
从
线
程
中
创
建
的
是
一
个
新
的
进
程
。
7
.
9
.
a
i
o
a
s
y
n
c
i
o
a
i
o
h
t
t
p
m
u
l
t
i
p
r
o
c
e
s
s
i
n
g
.
Q
u
e
u
e
m
u
l
t
i
p
r
o
c
e
s
s
i
n
g
a
s
y
n
c
i
o
m
u
l
t
i
p
r
o
c
e
s
s
i
n
g
1
.
d
e
f
g
a
m
e
_
l
o
o
p
(
a
s
y
n
c
i
o
_
l
o
o
p
)
:
2
.
#
c
o
r
o
u
t
i
n
e
t
o
r
u
n
i
n
m
a
i
n
t
h
r
e
a
d
3
.
a
s
y
n
c
d
e
f
n
o
t
i
f
y
(
)
:
4
.
a
w
a
i
t
t
i
c
k
.
a
c
q
u
i
r
e
(
)
5
.
t
i
c
k
.
n
o
t
i
f
y
_
a
l
l
(
)
6
.
t
i
c
k
.
r
e
l
e
a
s
e
(
)
8
.
q
u
e
u
e
=
Q
u
e
u
e
(
)
1
0
.
#
f
u
n
c
t
i
o
n
t
o
r
u
n
i
n
a
d
i
f
f
e
r
e
n
t
p
r
o
c
e
s
s
1
1
.
d
e
f
w
o
r
k
e
r
(
)
:
1
2
.
w
h
i
l
e
1
:
1
3
.
p
r
i
n
t
(
"
d
o
i
n
g
h
e
a
v
y
c
a
l
c
u
l
a
t
i
o
n
i
n
p
r
o
c
e
s
s
{
}
"
.
f
o
r
m
a
t
(
o
s
.
g
e
t
p
i
d
(
)
)
)
1
4
.
s
l
e
e
p
(
1
)
1
5
.
q
u
e
u
e
.
p
u
t
(
"
c
a
l
c
u
l
a
t
i
o
n
r
e
s
u
l
t
"
)
1
6
.
1
8
.
这
里
我
们
在
另
外
一
个
进
程
中
运
行
函
数
。
它
包
括
一
个
执
行
复
杂
计
算
并
把
计
算
结
果
放
到
中
的
循
环
,
这
个
是
的
实
例
。
然
后
我
们
就
可
以
在
另
外
一
个
线
程
的
主
事
件
循
环
中
获
取
结
果
并
通
知
客
户
端
,
就
和
例
子
3
.
5
一
样
。
这
个
例
子
已
经
非
常
简
化
了
,
它
没
有
合
理
的
结
束
进
程
。
而
且
在
真
实
的
游
戏
中
,
我
们
可
能
需
要
另
外
一
个
队
列
来
将
数
据
传
递
给
。
有
一
个
项
目
叫
a
i
o
p
r
o
c
e
s
s
i
n
g
[
1
6
]
,
它
封
装
了
,
使
得
它
可
以
和
兼
容
。
但
是
实
际
上
它
只
是
和
上
面
例
子
使
用
了
完
全
一
样
的
方
法
:
从
线
程
中
创
建
进
程
。
它
并
没
有
给
你
带
来
任
何
方
便
,
除
了
它
使
用
了
简
单
的
接
口
隐
藏
了
后
面
的
这
些
技
巧
。
希
望
在
P
y
t
h
o
n
的
下
一
个
版
本
中
,
我
们
能
有
一
个
基
于
协
程
且
支
持
的
库
。
注
意
!
如
果
你
从
主
线
程
或
者
主
进
程
中
创
建
了
一
个
不
同
的
线
程
或
者
子
进
程
来
运
行
另
外
一
个
事
件
循
环
,
你
需
要
显
式
地
使
用
来
创
建
循
环
,
不
然
的
话
可
能
程
序
不
会
正
常
工
作
。
v
i
a
:
h
t
t
p
s
:
/
/
7
w
e
b
p
a
g
e
s
.
c
o
m
/
b
l
o
g
/
w
r
i
t
i
n
g
-
o
n
l
i
n
e
-
m
u
l
t
i
p
l
a
y
e
r
-
g
a
m
e
-
w
i
t
h
-
p
y
t
h
o
n
-
a
n
d
-
a
s
y
n
c
i
o
-
w
r
i
t
i
n
g
-
g
a
m
e
-
l
o
o
p
/
1
7
.
P
r
o
c
e
s
s
(
t
a
r
g
e
t
=
w
o
r
k
e
r
)
.
s
t
a
r
t
(
)
1
9
.
w
h
i
l
e
1
:
2
0
.
#
b
l
o
c
k
s
t
h
i
s
t
h
r
e
a
d
b
u
t
n
o
t
m
a
i
n
t
h
r
e
a
d
w
i
t
h
e
v
e
n
t
l
o
o
p
2
1
.
r
e
s
u
l
t
=
q
u
e
u
e
.
g
e
t
(
)
2
2
.
p
r
i
n
t
(
"
g
e
t
t
i
n
g
{
}
i
n
p
r
o
c
e
s
s
{
}
"
.
f
o
r
m
a
t
(
r
e
s
u
l
t
,
o
s
.
g
e
t
p
i
d
(
)
)
)
2
3
.
t
a
s
k
=
a
s
y
n
c
i
o
.
r
u
n
_
c
o
r
o
u
t
i
n
e
_
t
h
r
e
a
d
s
a
f
e
(
n
o
t
i
f
y
(
)
,
a
s
y
n
c
i
o
_
l
o
o
p
)
2
4
.
t
a
s
k
.
r
e
s
u
l
t
(
)
w
o
r
k
e
r
(
)
q
u
e
u
e
q
u
e
u
e
m
u
l
t
i
p
r
o
c
e
s
s
i
n
g
.
Q
u
e
u
e
w
o
r
k
e
r
m
u
l
t
i
p
r
o
c
e
s
s
i
n
g
a
s
y
n
c
i
o
a
s
y
n
c
i
o
m
u
l
t
i
p
r
o
c
e
s
s
i
n
g
a
s
y
n
c
i
o
a
s
y
n
c
i
o
.
n
e
w
_
e
v
e
n
t
_
l
o
o
p
(
)
作
者
:
K
y
r
y
l
o
S
u
b
b
o
t
i
n
[
1
7
]
译
者
:
c
h
u
n
y
a
n
g
-
w
e
n
校
对
:
w
x
y
本
文
由
L
C
T
T
[
1
8
]
原
创
编
译
,
L
i
n
u
x
中
国
荣
誉
推
出
(
题
图
来
自
:
d
e
v
i
a
n
t
a
r
t
.
c
o
m
[
1
9
]
)
[
1
]
:
h
t
t
p
:
/
/
s
n
a
k
e
p
i
t
-
g
a
m
e
.
c
o
m
/
[
2
]
:
h
t
t
p
:
/
/
s
n
a
k
e
p
i
t
-
g
a
m
e
.
c
o
m
/
[
3
]
:
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
7
W
e
b
P
a
g
e
s
/
s
n
a
k
e
p
i
t
-
g
a
m
e
/
b
l
o
b
/
m
a
s
t
e
r
/
s
i
m
p
l
e
/
i
n
d
e
x
.
h
t
m
l
[
4
]
:
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
7
W
e
b
P
a
g
e
s
/
s
n
a
k
e
p
i
t
-
g
a
m
e
/
b
l
o
b
/
m
a
s
t
e
r
/
s
i
m
p
l
e
/
g
a
m
e
_
l
o
o
p
_
b
a
s
i
c
.
p
y
[
5
]
:
h
t
t
p
:
/
/
a
i
o
h
t
t
p
.
r
e
a
d
t
h
e
d
o
c
s
.
o
r
g
/
[
6
]
:
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
7
W
e
b
P
a
g
e
s
/
s
n
a
k
e
p
i
t
-
g
a
m
e
/
b
l
o
b
/
m
a
s
t
e
r
/
s
i
m
p
l
e
/
g
a
m
e
_
l
o
o
p
_
h
a
n
d
l
e
r
.
p
y
[
7
]
:
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
7
W
e
b
P
a
g
e
s
/
s
n
a
k
e
p
i
t
-
g
a
m
e
/
b
l
o
b
/
m
a
s
t
e
r
/
s
i
m
p
l
e
/
g
a
m
e
_
l
o
o
p
_
g
l
o
b
a
l
.
p
y
[
8
]
:
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
7
W
e
b
P
a
g
e
s
/
s
n
a
k
e
p
i
t
-
g
a
m
e
/
b
l
o
b
/
m
a
s
t
e
r
/
s
i
m
p
l
e
/
g
a
m
e
_
l
o
o
p
_
w
a
i
t
.
p
y
[
9
]
:
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
7
W
e
b
P
a
g
e
s
/
s
n
a
k
e
p
i
t
-
g
a
m
e
/
b
l
o
b
/
m
a
s
t
e
r
/
s
i
m
p
l
e
/
g
a
m
e
_
l
o
o
p
_
t
h
r
e
a
d
.
p
y
[
1
0
]
:
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
7
W
e
b
P
a
g
e
s
/
s
n
a
k
e
p
i
t
-
g
a
m
e
/
b
l
o
b
/
m
a
s
t
e
r
/
s
i
m
p
l
e
/
g
a
m
e
_
l
o
o
p
_
p
r
o
c
e
s
s
.
p
y
[
1
1
]
:
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
a
i
o
-
l
i
b
s
/
a
i
o
m
c
a
c
h
e
[
1
2
]
:
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
a
i
o
-
l
i
b
s
/
a
i
o
z
m
q
[
1
3
]
:
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
a
i
o
-
l
i
b
s
/
a
i
o
r
e
d
i
s
[
1
4
]
:
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
K
e
e
p
S
a
f
e
/
a
i
o
h
t
t
p
/
b
l
o
b
/
m
a
s
t
e
r
/
e
x
a
m
p
l
e
s
/
m
p
s
r
v
.
p
y
[
1
5
]
:
h
t
t
p
s
:
/
/
d
o
c
s
.
p
y
t
h
o
n
.
o
r
g
/
3
.
5
/
l
i
b
r
a
r
y
/
m
u
l
t
i
p
r
o
c
e
s
s
i
n
g
.
h
t
m
l
[
1
6
]
:
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
d
a
n
o
/
a
i
o
p
r
o
c
e
s
s
i
n
g
[
1
7
]
:
h
t
t
p
s
:
/
/
7
w
e
b
p
a
g
e
s
.
c
o
m
/
b
l
o
g
/
w
r
i
t
i
n
g
-
o
n
l
i
n
e
-
m
u
l
t
i
p
l
a
y
e
r
-
g
a
m
e
-
w
i
t
h
-
p
y
t
h
o
n
-
a
n
d
-
a
s
y
n
c
i
o
-
w
r
i
t
i
n
g
-
g
a
m
e
-
l
o
o
p
/
[
1
8
]
:
h
t
t
p
s
:
/
/
g
i
t
h
u
b
.
c
o
m
/
L
C
T
T
/
T
r
a
n
s
l
a
t
e
P
r
o
j
e
c
t
[
1
9
]
:
h
t
t
p
:
/
/
a
z
a
n
y
.
d
e
v
i
a
n
t
a
r
t
.
c
o
m
/
a
r
t
/
G
r
i
f
f
i
n
-
d
a
w
n
-
2
9
4
0
5
5
2
2
0
推
荐
文
章
推
荐
文
章
点
击
标
题
或
输
入
文
章
I
D
直
达
该
文
章
回复
举报
上一个主题
下一个主题
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
!disable!!post_parseurl!
使用Markdown编辑器编辑
使用富文本编辑器编辑
回帖后跳转到最后一页