Amino

并发线程组件
授权协议 Apache
开发语言 Java C/C++
所属分类 程序开发、 并发/并行处理框架
软件类型 开源软件
地区 不详
投 递 者 桓信鸥
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Amino CBB (Concurrent Building Blocks) 类库将提供优化后的并发线程组件,适用于JDK6.0 及其以后的版本。

Amino Java 类库将涉及下面四个方面的内容:

1) 数据结构 
该组件将提供一套免锁的集合类。因为这些数据结构采用免锁的运算法则来生成,所
以,它们将拥有基本的免锁组件的特性,如可以避免不同类型的死锁,不同类型的线程初始
化顺序等。 
2) 并行模式 
Amino 将为应用程序提供一个或几个大家熟知的并行计算模式。采用这些并行模式可
以使开发者起到事半功倍的效果,这些模式包括 Master-Worker、Map-reduce、Divide and 
conquer, Pipeline 等,线程调度程序可以与这些模式类协同工作,提供了开发效率。 
3) 并行计算中的一般功能 
Amino 将为应用程序提供并行计算中常用的方法,例如: 
a. String、Sequence  和Array  的处理方面。如Sort、Search、Merge、Rank、Compare、
Reverse、 Shuffle、Rotate 和Median 等 
4)原子和STM(软件事务内存模型) 

--------------------------------
在Amino 类库中,主要算法将使用锁无关的(Lock-Free)的数据结构。 

原语Compare-and-swap(CAS)  是实现锁无关数据结构的通用原语。CAS  可以原子
地比较一个内存位置的内容及一个期望值,如果两者相同,则用一个指定值取替这个内存位
罝里的内容,并且提供结果指示这个操作是否成功。

CAS 操作过程是:当处理器要更新一个内存位置的值的时候,它首
先将目前内存位置的值与它所知道的修改前的值进行对比(要知道在多处理的时候,你要更
新的内存位置上的值有可能被其他处理更新过,而你全然不知),如果内存位置目前的值与
期望的原值相同(说明没有被其他处理更新过),那么就将新的值写入内存位置;而如果不
同(说明有其他处理在我不知情的情况下改过这的值咯),那么就什么也不做,不写入新的
值(现在最新的做法是定义内存值的版本号,根据版本号的改变来判断内存值是否被修改,
一般情况下,比较内存值的做法已经满足要求了)。CAS 的价值所在就在于它是在硬件级别
实现的,速度那是相当的快。

  • amino是对象编码规范。它是Proto3的子集,具有接口支持扩展 amino与Proto3很大程度上兼容(但与Proto2不兼容) amino 协议目标 通过支持接口将奇偶校验分为逻辑对象和持久对象。 具有唯一/确定性的值编码。 二进制字节必须可以使用模式进行解码。 模式必须是可升级的。 没有模式,足够的结构必须可以解析。 编码器和解码器逻辑必须相当简单。 序列化必须合理紧凑。 必须保持足够兼容

  • [size=medium] 对数据加锁是实现多线程的一种策略,但是加锁无疑会增加系统性能开销,如果处理不当会带来巨大损失。 及时使用一些无所算法,但仍然需要在应用层处理线程间的冲突问题,这无疑增加了应用程序的开发难度和算法的复杂度。为了解决这个问题,选择一些现成的无所并行框架就成了解决这个问题的好办法。 Amino 框架就是其中之一,他是apache下的一个分支项目,提供了可用于线程安全的,基于无

  • Amino is an encoding library that can handle Interfaces. This is achieved by prefixing bytes before each “concrete type”. This blob will focus on the implement of this speciality. code version: go-ami

  • Amino框架:https://blog.csdn.net/weixin_30855761/article/details/96532657

  • Abstract Amino acids are regarded as the nitrogen ‘currency’ of plants. Amino acids can be taken up from the soil directly or synthesized from inorganic nitrogen, and then circulated in the plant via

  • Appearance: off-white beads Quality control: NMR 1H and HPLC-MS (95%) of bound reagent, loading measurement Storage conditions: Storage: 24 months after receival at -20°C. Transportation: at room temp

  • Amino框架是一个采用无锁方式实现并行计算的框架,可惜的是,网上关于Amino框架的介绍甚少。根据所掌握的资料,稍微总结一下: 1. 锁机制到无锁机制 锁机制可以确保程序和数据的线程安全,但是锁是一种阻塞式的同步方式,无论是ReentrantLock、synchronized,还是Semaphore,都受到核心资源的限制。为避免这个问题,便提出了无锁的同步机制。 2. 基于Compare-and

  • 题目链接. 记一道恶心心的题… 暴力dfs即可,我是用string记录的每一种情况。 真是被输出恶心到了 感觉直接把羟基羧基脱水处理好是我觉得比较简单的方法。 再次感慨一下选择好重要… 为什么没有留一场昆明打 #include<bits/stdc++.h> #define ll long long #define pii pair<int,int> using namespace std; st

  • 在平常逛网页的时候,相信肯定有人和我一样有过想要修改网页的时候 比如遇到一些网站会加载很多自己用不到的东西,通知栏、在线客服、推广信息等,就想要去掉他们 还有一些网站某些地方会有错误,用户体验非常差 或者只是想要更改一下别人网站的配色 这些需求,其实我们都可以用Amino这个扩展来实现 Amino 是一款实时的CSS编辑工具,它能够为任意网站或页面添加自定义的CSS代码,并将其存储在浏览器中,让你

 相关资料
  • 并发是什么?引用Rob Pike的经典描述: 并发是同一时间应对多件事情的能力 其实在我们身边就有很多并发的事情,比如一边上课,一边发短信;一边给小孩喂奶,一边看电视,只要你细心留意,就会发现许多类似的事。相应地,在软件的世界里,我们也会发现这样的事,比如一边写博客,一边听音乐;一边看网页,一边下载软件等等。显而易见这样会节约不少时间,干更多的事。然而一开始计算机系统并不能同时处理两件事,这明显满

  • 本章讲解 Rust 中,并发,并行,多线程编程的相关知识。

  • 并行 理论上并行和语言并没有什么关系,所以在理论上的并行方式,都可以尝试用Rust来实现。本小节不会详细全面地介绍具体的并行理论知识,只介绍用Rust如何来实现相关的并行模式。 Rust的一大特点是,可以保证“线程安全”。而且,没有性能损失。更有意思的是,Rust编译器实际上只有Send Sync等基本抽象,而对“线程” “锁” “同步” 等基本的并行相关的概念一无所知,这些概念都是由库实现的。这

  • 在大部分现代操作系统中,执行中程序的代码运行于一个 进程(process)中,操作系统则负责管理多个进程。在程序内部,也可以拥有多个同时运行的独立部分。这个运行这些独立部分的功能被称为 线程(threads)。 将程序中的计算拆分进多个线程可以改善性能,因为程序可以同时进行多个任务,不过这也会增加复杂性。因为线程是同时运行的,所以无法预先保证不同线程中的代码的执行顺序。这会导致诸如此类的问题: 竞

  • 在理解并发线程和最终线程组的概念时,我对运行并发线程或最终线程组时的汇总/聚合报告结果的理解感到困惑,例如,如果我有200个用户,上升时间为60秒,那么在成功完成执行后,我并没有看到所有的采样请求都是200个样本,而只有少数采样请求有200个样本。当我使用普通线程组时,每次采样请求完成后,我总是得到相同的线程数。 对于更多用户的实际负载测试,您能否建议我应该选择哪一个线程组。 您是否可以提供一些有

  • 同步 同步指的是线程之间的协作配合,以共同完成某个任务。在整个过程中,需要注意两个关键点:一是共享资源的访问, 二是访问资源的顺序。通过前面的介绍,我们已经知道了如何让多个线程访问共享资源,但并没介绍如何控制访问顺序,才不会出现错误。如果两个线程同时访问同一内存地址的数据,一个写,一个读,如果不加控制,写线程只写了一半,读线程就开始读,必然读到的数据是错误的,不可用的,从而造成程序错误,这就造成了