lockless

    -1热度

    3回答

    这就是我到目前为止,我正朝着正确的方向前进吗? 目标是在一个线程需要比其他线程更频繁地访问单例的情况下使用它,因此无锁代码是可取的,我想在实践中使用原子变量。 public final class ThreadSafeLazyCompareAndSwapSingleton { private ThreadSafeLazyCompareAndSwapSingleton(){} private

    0热度

    1回答

    我试图创建一个缓冲输入的形式,看看它是多么容易实现,没有使用Rx或任何其他库(外部标准.net 4.5)。所以,我想出了下面的类: public class BufferedInput<T> { private Timer _timer; private volatile Queue<T> _items = new Queue<T>(); public event

    4热度

    1回答

    我正在创建一个非常快速的多线程离散事件模拟框架。该框架的核心使用原子和无锁编程技术来实现跨多线程的快速执行。这需要我将一些变量对齐到缓存行并填充剩余的缓存行空间,以便我没有缓存行争用。下面是我如何做到这一点: // compute cache line padding size constexpr u64 CLPAD(u64 _objSize) { return ((_objSize/

    13热度

    1回答

    我想实现一个线程安全的无锁的容器,类似于到std :: vector的,根据这个https://software.intel.com/en-us/blogs/2008/07/24/tbbconcurrent_vector-secrets-of-memory-organization 从我的理解,防止再次分配和无效所有迭代器在所有线程上,而不是一个连续的数组,他们添加新的连续块。 他们添加的每个块的

    1热度

    2回答

    我需要一个数据结构来存储500k密钥,每个密钥都有一些关联的数据。 150个线程将同时运行&访问密钥。一天之后,我需要更新数据结构,因为可能会有一些操作操作,例如删除密钥,添加新密钥或更改数据。 正在进行数据结构更新时,我无法阻止任何150个线程访问它。 我不想使用当前的散列实现,如memcache或redis,因为密钥的数量可能会在将来增长&我想要内存访问以加快查找速度?而不是更喜欢C/C++中

    2热度

    2回答

    根据MSDN,Stopwatch类实例方法对于多线程访问不安全。这也可以通过检查个别方法加以确认。 然而,因为我只需要简单的“时间流逝”在我的代码的几个地方定时器,我想知道,如果它仍然可以使用像做无锁,: public class ElapsedTimer : IElapsedTimer { /// Shared (static) stopwatch instance. st

    0热度

    1回答

    我想了解Linux内核中的无锁列表。这在llist.h中定义。为什么他们有两个结构来定义一个列表: struct llist_head { struct llist_node *first; }; struct llist_node { struct llist_node *next; }; 为什么不只有一个结构有指向下一个节点的指针呢?它类似于内核中的双链表实现。

    0热度

    1回答

    我使用的是在llist.h中定义的Linux内核的无锁列表。 llist_add将添加到列表中,但它会在头后添加新节点。我如何在常量时间内添加到列表尾部?

    3热度

    1回答

    我已经写了一些代码在红宝石通过线程池处理数组中的项目。在这个过程中,我预先分配了一个与传入数组大小相同的结果数组。在线程池中,我在预分配的数组中分配项目,但这些项目的索引保证是唯一的。考虑到这一点,我是否需要用Mutex#synchronize包围作业? 例子: SIZE = 1000000000 def collect_via_threadpool(items, pool_count = 10

    6热度

    2回答

    Go的缓冲通道本质上是一个线程安全的FIFO队列。 (见Is it possible to use Go's buffered channel as a thread-safe queue?) 我想知道它是如何实现的。它是否像Is there such a thing as a lockless queue for multiple read or write threads?中描述的那样是无锁的