相关疑难解决方法(0)

在C++中是否有生产就绪的无锁队列或散列实现

我一直在谷歌搜索C++中的无锁队列.我发现了一些代码和一些试验 - 但我没有能够编译.也欢迎无锁哈希.

摘要:到目前为止,我没有正面答案.没有"生产就绪"库,令人惊讶的是现有的库都没有符合STL容器的API.

c++ stl lock-free

77
推荐指数
9
解决办法
4万
查看次数

C中的任何单用户单生产者无锁队列实现?

我正在编写一个带有消费者线程和生产者线程的程序,现在看来队列同步在程序中是一个很大的开销,我找了一些无锁队列实现,但只发现了Lamport的版本和PPoPP的改进版本' 08:

enqueue_nonblock(data) {
    if (NULL != buffer[head]) {
        return EWOULDBLOCK;
    }
    buffer[head] = data;
    head = NEXT(head);
    return 0;
}

dequeue_nonblock(data) {
    data = buffer[tail];
    if (NULL == data) {
        return EWOULDBLOCK;
    }
    buffer[tail] = NULL;
    tail = NEXT(tail);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

两个版本都需要为数据预先分配的数组,我的问题是,是否存在使用malloc()动态分配空间的任何单用户单生产者无锁队列实现?

另一个相关的问题是,如何测量队列同步中的确切开销?比如pthread_mutex_lock()需要多长时间等.

c multithreading lock-free data-structures

11
推荐指数
1
解决办法
6510
查看次数

标签 统计

lock-free ×2

c ×1

c++ ×1

data-structures ×1

multithreading ×1

stl ×1