ByteThink
其他
java多线程——volatile
不是原子操作上述原理介绍中,我们有说volatile只对只对任意单个volatile变量的读/写具有原子性,比如变量a的赋值操作,可以为原子的,但变量a++不为原子的,我们看个示例:public
2017年8月18日
其他
java多线程-内存模型
》中我们了解了线程在操作系统中的是如何派生出来的,这一篇我们聊聊jvm的内存模型,了解一些jvm在内存操作中如何保证一致性问题的。本篇主要包含以下内容:
2017年8月16日
其他
java 多线程—线程怎么来的?
并发处理的广泛应用是使得amdah1定律代替摩尔定律成为计算机性能发展源动力的根本原因,是人类压榨计算机运算能力的最有力武器。并发并非一定得用多线程,多进程也可以,不过java里面谈论并发,大多数与线程脱不开关系。因此我们从线程说起。本文主要包含以下内容:线程的实现线程的调度线程状态切换1线程的实现线程是比进程更轻量级的调度执行单位,在linux里面,线程和进程没有什么区别,唯一的就是在地址空间,线程的切换虚拟内存空间依然是相同的,但是进程切换是不同的。目前主流的操作系统都提供的线程实现,java则提供的线程实现方法都是native的,因为不同的硬件和操作系统提供线程调度方式并不尽相同,所以java没用采用和平台无关的统一手段来实现。实现线程的主要3种方式:使用内核线程实现,使用用户线程实现,使用用户线程加轻量级进程混合实现。1内核线程实现内核线程(KLT)就是直接由操作系统内核支持的线程,这种线程由内核来完成线程切换。程序一般不会直接使用内核线程,而是去使用内核线程的一种高级接口—轻量级进程(LWP),轻量级进程就是我们所讲的线程,这种轻量级进程与内核线程之间1:1的对应关系。优点:内核直接支持,由操作系统内核创建和撤销。内核维护进程及线程的上下文信息以及线程切换。一个内核线程由于I/O操作而阻塞,不会影响其它线程的运行。缺点:
2017年8月10日
其他
游戏服务器的架构演进(完整版)
现在的游戏大地图采用无缝地图多数采用的是9宫格的样式来处理,由于地图没有魔兽世纪那么大,所以采用单台服务器多进程处理即可,不过类似魔兽世界这种大世界地图,必须考虑2个问题:
2017年7月3日
其他
从《王者荣耀》来聊聊游戏的帧同步
图中是A、B、C三个玩家的时间轴,这个时间轴不是电脑上的本地时间,而是A、B、C联机时定义的一个时间轴。虚线分隔出来时间片称为turn,可以理解成一帧。箭头表示该玩家将自己的操作指令广播给其他玩家。
2017年6月28日
其他
像《王者荣耀》一样红过
经过这一系列冲击,令雅达利雪上加霜,同时美国游戏产业经此冲击等于是遭遇灭顶之灾,无数游戏制作公司纷纷倒闭,游戏产业的重心自此从美国转移至日本。美国游戏产业从此一蹶不振,直到二十年后微软发售XBOX。
2017年6月19日
其他
从一条sql来理解数据库索引
MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,比如MyISAM中,索引和数据是分离的,叶子的data节点存储数据地址,而InnoDB是采用聚集索引。
2017年6月16日
其他
每个开发者都需要了解一些—游戏网络
帧同步模型。每一回合每个玩家的输入的信息(比如关键按键等)都与其他人进行同步通知,并且任何玩家在播放这一帧动画之前,必须得等到所有其他玩家的关键按键信息都被接收到,才可以去模拟播放。
2017年5月27日