高级线程同步关键代码段1.原子操作。2.临界区指定一个CRITICAL_SECTION 数据结构g_cs,然后对EnterCriticalSection和LeaveCriticalSection访问共享资源当拥有一项可供多个线程访问的资源时,应该创建临界区。类似多个人上厕所。如果多个不是一道线程使用...
分类:
编程语言 时间:
2015-01-27 23:08:17
阅读次数:
289
Transaction(事务)事务简介事务的作用是保护数据完整性.它将一系列操作作为一个原子操作来处理, 从而防止多个操作中有的操作失败有的操作成功, 造成数据不完整. 在 JDBC 中, 一个连接默认的提交方式是Auto-Commit模式, 在这种模式下, 每个单独的SQL语句都会被视为一个事务,...
分类:
数据库 时间:
2015-01-25 23:47:27
阅读次数:
230
作者:二青个人站点:zhangerqing.cn 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggefAtomic简介Atomic包是java.util.concurrent下的另一个专门为线程安全设计的Java包,包含多个原子操作类。这个包里面提供了一组原子变量类。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时...
分类:
编程语言 时间:
2015-01-24 11:40:19
阅读次数:
150
同步代码块是一种有效实现操作原子性的方法,上一章我们讲了一些同步的原子操作的基础。
现在我们回忆一下上一章的两个问题。
1:不同的synchronized的写法有什么区别,又该怎么写创建线程的代码呢?
以class实例对象作为锁的写法
写法1
package com.home.thread;
/**
* @author gaoxu
*
*/
public class SafeT...
分类:
编程语言 时间:
2015-01-20 23:57:52
阅读次数:
393
上一篇文章我们通过一个实例来说明了并发编程为什么要做同步处理,下面我们再来巩固一下。
对象如果拥有可变状态的变量,并且被多线程访问,那么这个时候我们要对可变状态变量的状态改变做原子操作处理。
锁机制是保证这样的操作的一个有效的方法,它可以保证变量的状态在被更新时是在一个原子操作中进行的。
java提供了一种内置锁机制来支持原子性:同步代码块(Sync...
分类:
编程语言 时间:
2015-01-18 15:44:11
阅读次数:
205
上一篇《秒杀多线程第三篇原子操作 Interlocked系列函数》中介绍了原子操作在多进程中的作用,如今来个复杂点的。这个问题涉及到线程的同步和相互排斥,是一道很有代表性的多线程同步问题,假设能将这个问题搞清楚,那么对多线程同步也就打下了良好的基础。程序描写叙述:主线程启动10个子线程并将表示子线程...
分类:
编程语言 时间:
2015-01-16 22:09:57
阅读次数:
171
介绍
在分布式系统中,事务的运用和共享资源的并发控制是非常常见的。简单的说,事务就是一些原子的操作的集合。原子操作的意思就是要么操作成功要么操作失败,没有其他的选择。并发控制是出现在高并发场景的时候,本篇主要描述3种常见的手段,1、锁的措施。2、乐观并发控制手段。3、时间戳序列方式。在此之前,先回顾一下平时在写程序的时候,常见的用于同步的手段,比如说:
1、用synchronize关键字,这个...
分类:
其他好文 时间:
2015-01-16 16:49:23
阅读次数:
240
目录(?)[-]一设计理念空间换时间 多级缓存静态化 索引并行与分布式计算 任务切分分而治之MR 多进程多线程并行执行MPP多维度的可用 负载均衡容灾备份 读写分离 依赖关系 监控伸缩 拆分 无状态优化资源利用 系统容量有限 原子操作与并发控制 基于逻辑的不同采取不一样的策略 容错隔离 资源释放二静...
分类:
其他好文 时间:
2015-01-15 10:53:45
阅读次数:
254
int global = 0;
// thread 1
for(int i = 0; i < 10; ++i)
global -= 1;
// thread 2
for(int i = 0; i < 10; ++i)
global += 1;之后global的可能的值是多少(多种可能)?
这个问题考虑的是全局变量global的加减操作不是原子操作,在加减过程中有可能被打断,从而产生...
分类:
编程语言 时间:
2015-01-13 19:48:40
阅读次数:
168
本文由该问题引入到内核锁的讨论,归纳例如以下为什么须要内核锁?多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是能够訪问全部内核数据的,因此要对共享数据进行保护,即相互排斥处理有哪些内核锁机制?(1)原子操作atomic_t数据类型,atomic_inc(atomic_t *v)将v...
分类:
其他好文 时间:
2015-01-12 22:18:00
阅读次数:
139