如果一个对象的状态在创建以后就不会再改变,那么就可以认为它是不可变对象。因为这些对象无法被修改,所以不需要考虑多线程下的同步问题,这使得不可变对象在多线程程序中能够发挥重大作用。如下所示,String对象就是一个不可变对象。对于firstName一些列的操作(连接""和lastName)并不会修改这些字符串中的任何一个,而是会重新创建一个新的对象来存放fullName。自定义一
分类:
编程语言 时间:
2019-05-08 23:10:11
阅读次数:
216
在之前的印象中,只处理过同一个类方法同步的问题。在工作中,遇到了两个类的方法需要同步的问题。 具体业务场景是,在某预约系统,预约有两个入口,一个是pc端的,一个是微信公众号端的。因为没有考虑高并发问题,导致两个用户同时分别在两个接口预约导致冲突问题,下面记录下 ,解决的方法的代码示例。 利用一个Th ...
分类:
编程语言 时间:
2019-04-29 21:03:49
阅读次数:
153
多线程操作全局变量,必须考虑同步问题,否则可能出现数据不一致, 甚至触发coredump. 前段时间, 遇到一个多线程操作了全局的vector的问题, 程序崩了。场景是这样的:某全局配置参数保存在一个vector中,需要定时更新(更新线程), 另外的工作线程去读取配置。 这种场景是非常普遍的。 在该 ...
分类:
编程语言 时间:
2019-04-16 10:37:09
阅读次数:
264
1. 简介:Reactor : 反应堆模型, 一种事件驱动方式。 2. 优点 a 响应快,不必为单个同步时间所阻塞。(Reactor 本身是同步的) b 编程相对简单,可以最大程度的避免复杂的多线程和同步问题,避免了多线程/进程的切换开销 c 可扩展性, 可以方便的通过增加Reactor实例个数来充 ...
分类:
其他好文 时间:
2019-04-14 14:15:58
阅读次数:
89
网路的硬件也有限,而人的创造也无限,在公网平均130ms的Latency下,是不存在“完全的”的同步情况。如何通过消除/隐藏延时,将用户带入快速的交互式实时游戏中,体验完美的互动娱乐呢? 以下六点,将助你分清楚哪些我们可以努力,哪些我们不值得努力,弄明白实时游戏中同步问题关键之所在,巧妙的化解与规避 ...
分类:
其他好文 时间:
2019-03-26 13:41:11
阅读次数:
155
关于linux哪些能调用schedule或者等待事件的问题对同步问题,需要注意:1)不能调用schedule的情况(wait_event、sleep等,等待函数内部会调用schedule):(1)中断、(2)软中断、(3)tasklet、(4)timer(基于软中断实现)、(5)hrtimer(软中断或硬中断环境下执行)执行环境下、(6)或者“内核线程、普通线程内核态环境下调用了preempt_d
分类:
系统相关 时间:
2019-03-24 00:29:54
阅读次数:
265
最近在学线程,在加上操作系统也在学线程,于是乎有了这篇文章 问题描述: 一群生产者进程在生成产品,并将这些产品提供给消费者进程去消费. 他们之间有一个公共的缓冲区用来存放产品,当产品为空时消费者不能消费,当产品为满时生产者不能生产 CPP实现 利用mutex 互斥量 来对缓存区的操作进行加锁 C++ ...
分类:
系统相关 时间:
2019-03-19 01:02:36
阅读次数:
197
对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了,然而并发问题是令我们大多数程序员头疼的问题,但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们深入研究一下常见的并发和同步问题吧。 一、同步和异步的区别和联系 为了更好的理解同步和并发问题,我们需要先 ...
分类:
编程语言 时间:
2019-03-05 18:31:22
阅读次数:
200