Redis 提供的命令简单而高效,但有时候我们可能会需要命令更复杂一些,如用来实现“原子”操作或复合命令。本文通过几个实例介绍了 Redis 提供的 Lua 脚本嵌入功能,并总结了一下适用场景。 ...
分类:
其他好文 时间:
2018-02-05 21:39:43
阅读次数:
169
生产者与消费者模式 1. 队列 先进先出 2. 栈 先进后出 Python的Queue模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue。这些队列都实现了锁原语(可以理解为原子操作,即要么不 ...
分类:
编程语言 时间:
2018-02-05 20:09:39
阅读次数:
166
<<操作系统精髓与设计原理>>读书笔记(一) 并发性:互斥与同步 并发问题是所有问题的基础,也是操作系统设计的基础。并发包括很多设计问题,其中有进程间通信,资源共享与竞争,多个进程活动的同步以及分配给进程的处理器时间的。 和并发相关的关键术语:原子操作: 一个或多个指令的序列,对外是不可分的;即没有 ...
分类:
其他好文 时间:
2018-02-01 21:13:26
阅读次数:
177
鉴于昨天的文章<<使用Interlocked在多线程下进行原子操作,无锁无阻塞的实现线程运行状态判断>>里面有一个封装好的无锁的类库可以判断并发下的结束状况,我们可以完成并发时,以及并发的同时做一些事,因此,今天我做了个小demo: 但是发现了一个问题: 这CPU使用率....然后我看了下输出结果: ...
分类:
其他好文 时间:
2018-01-26 23:00:12
阅读次数:
244
巧妙地使用Interlocked的各个方法,再无锁无阻塞的情况下判断出所有线程的运行完成状态。 昨晚耐着性子看完了clr via c#的第29章<<基元线程同步构造>>,尽管这本书不是第一次看了,但是之前看的都是一带而过,没有深入理解,甚至可以说是不理解,实习了之后发现自己的知识原来这么表面,很多的 ...
分类:
编程语言 时间:
2018-01-25 20:43:08
阅读次数:
195
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来 ...
分类:
编程语言 时间:
2018-01-23 01:03:35
阅读次数:
185
1、OC常用属性汇总 atomic:生成的setter、getter操作为原子操作,为系统默认,执行性能低,但是是线程安全的。 nonatomic:生成的setter、getter操作是非原子操作,推荐手动设置为nonatomic属性,执行性能高,多线程容易出现异常。 assign:用来修饰值类型, ...
分类:
其他好文 时间:
2018-01-15 16:32:00
阅读次数:
166
什么是原子操作 不可被中断的一个或者一系列操作 实现原子操作的方式 Java可以通过锁和循环CAS的方式实现原子操作 CAS( Compare And Swap ) 为什么要有CAS? Compare And Swap就是比较并且交换的一个原子操作,由Cpu在指令级别上进行保证。 为什么要有CAS: ...
分类:
编程语言 时间:
2018-01-07 14:23:03
阅读次数:
157
一、Java并发基础 当一个对象或变量可以被多个线程共享的时候,就有可能使得程序的逻辑出现问题。 在一个对象中有一个变量i=0,有两个线程A,B都想对i加1,这个时候便有问题显现出来,关键就是对i加1的这个过程不是原子操作。要想对i进行递增,第一步就是获取i的值,当A获取i的值为0,在A将新的值写入... ...
分类:
编程语言 时间:
2018-01-07 14:13:46
阅读次数:
154
在Atomic包里一共提供了13个类,属于4种类型的原子更新方式,分别是原子更新基本类型、原子更新数组、原子更新引用和原子更新属性(字段)。Atomic包里的类基本都是使用Unsafe实现的包装类。 1.原子更新基本类型, Atomic包提供了以下3个类。·AtomicBoolean AtomicI ...
分类:
其他好文 时间:
2018-01-06 21:05:42
阅读次数:
174