请选择 进入手机版 | 继续访问电脑版
记得收藏【国际动画教程网】,赶快注册吧!
注册

合作站点账号登陆

QQ登录

只需一步,快速开始

扫一扫,访问微社区

快捷导航
查看: 32227|回复: 0
收起左侧

Java开源:traffic-shm-Java 版异步无锁共享内存实现[含2P]

[复制链接]
发表于 2017-5-25 07:26:51 | 显示全部楼层 |阅读模式

介绍

traffic-shm(Shared Memory)是一个基于Java的无锁消息库,专为在同一台服务器上的进程间通信(IPC)而设计。

特征

1. Pure Java

共享内存是进程间通信的有效机制。 内存映射文件提供动态内存管理功能,允许应用程序以与将虚拟地址空间的物理内存共享段相同的方式访问磁盘上的文件。

traffic-shm使用sun.misc.Unsafe和FileChannel提供纯Java实现,需要JDK 1.6+。

2. Lock-Free

使用非阻塞算法,实现多生产者/单消费者并发队列,traffic-shm可用于构建具有高吞吐量和低延迟的实时系统。

3. Cross-Platform

对齐:4字节对齐

byteorder:big-endian

支持大多数主要操作系统,如Linux,macOS,Windows,AIX和HP-UX。

注意:在HP-UX上设置-Xmpas:

4. Message Ordering

traffic-shm提供一个一键保证的FIFO队列。

光标只能向前传送,一旦消息成功传递,消息就是AUTOMATIC ACKNOWLEDGMENT,这意味着一旦接收者接收到消息,就会确认消息。

设计

入门

读:

Queue queue = Queue.map("/Users/peptos/shm", 2000L, 1, 0);
queue.init();

while (true) {
	Block block = queue.poll();
	if (block != null) {
		System.out.println(new String(block.getPayload(), "UTF-8"));
	} else {
		Util.pause(10);
	}
}

写:

Queue queue = Queue.map("/Users/peptos/shm", 2000L, 1, 0);

String string = "hello, world";
byte[] bytes = string.getBytes("UTF-8");
System.out.println(queue.put(new Block(bytes)));

queue.close();

TODO

  • extend mode

reference: Mycat-IPC

项目主页:http://www.open-open.com/lib/view/home/1494897978750




上一篇:21 个编程的热门/冷门趋势
下一篇:JavaScript开源:debugout.js-可将前端console.log的日志保存成文件
一起共享资源,共建精品资源平台。记得一定要收藏我们网站。www.gjdhjc.com ||||| 还有我们的网址导航:www.58q8.com【链接失效可以留言看到第一时间补帖,如果懒的回复我也是没办法了】
快速回复 返回顶部 返回列表