热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C:无锁内存分配库-C:Lock-FreeMemoryAllocationLibrary

Anyonehaveanygoodexperiencewithalock-freememoryallocatorforCc++?任何人都有使用Cc++无锁内存分配器的

Anyone have any good experience with a lock-free memory allocator for C/c++?

任何人都有使用C / c ++无锁内存分配器的良好经验?

I have looked into boost, and libcds, but I am unsure about which library to use.

我已经研究了boost和libcds,但我不确定要使用哪个库。

Background, I have been researching a "Lock-Free, Wait-Free, Non-Blocking, Dynamic Perfect Hashing, Expandable, Concurrent Hash Table" *Yes I know that sounds pretentious, but thats what it is called.

背景,我一直在研究“无锁,无等待,无阻塞,动态完美哈希,可扩展,并发哈希表”*是的我知道这听起来很自命不凡,但这就是所谓的。

Anyways, I am getting ready to start multi-thread testing it, and I need to figure the best way to setup memory allocation, when new nodes are added. (and when I need to allocate arrays of pointers)

无论如何,我正准备开始多线程测试,并且我需要在添加新节点时找出设置内存分配的最佳方法。 (当我需要分配指针数组时)

So does anyone have any good experience with lock free memory allocation?

那么有没有人有无锁内存分配的任何良好经验?

3 个解决方案

#1


5  

The pretty graphs show this implementation is good:

漂亮的图表显示这种实现很好:

http://locklessinc.com/

It's open source GPL 3.0 since 14 Nov 2011 :)

它是自2011年11月14日以来的开源GPL 3.0 :)

#2


2  

There is also streamflow. I haven't used it myself; I just ran into it while reading some publications.

还有流量。我自己没有用过它;我在阅读一些出版物时遇到过它。

#3


0  

Why not try the allocator from tbb? not sure how 'lock-free' it is, though I doubt you'll find a true lock-free allocator*, at least one that works across threads/cores(like tcmalloc)

为什么不从tbb尝试分配器?虽然我怀疑你会找到一个真正的无锁分配器*,但至少有一个可以跨线程/核心运行(如tcmalloc),但不确定它是如何'无锁'的。

*I tried to actually build one a few months back, but making it lockless has some drawbacks, at least from my perspective. I wasn't too keen of TLS arena's like nedmalloc has. I ended up with a hybrid kinda allocator, which locks only when a chunk-bin is empty.

*我试图在几个月前建立一个,但让它无锁是有一些缺点,至少从我的角度来看。我不太喜欢TLS竞技场,就像nedmalloc一样。我最终得到了一个混合类型分配器,它只在一个chunk-bin为空时锁定。


推荐阅读
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
  • Java编程思想一书中第21章并发中关于线程间协作的一节中有个关于汽车打蜡与抛光的小例子(原书的704页)。这个例子主要展示的是两个线程如何通过wait ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 第七课主要内容:多进程多线程FIFO,LIFO,优先队列线程局部变量进程与线程的选择线程池异步IO概念及twisted案例股票数据抓取 ... [详细]
  • vb.net不用多线程如何同时运行两个过程?不用多线程?即使用多线程,也不会是“同时”执行,题主只要略懂一些计算机编译原理就能明白了。不用多线程更不可能让两个过程同步执行了。不过可 ... [详细]
  • C++ STL复习(13)容器适配器
    STL提供了3种容器适配器,分别为stack栈适配器、queue队列适配器以及priority_queue优先权队列适配器。不同场景下,由于不同的序列式 ... [详细]
author-avatar
红色的甜言1986
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有