spdk thread 和poller 之间的关系

1 个 thread可以有多个poller;

如何使用

创建spdk thread

spdk_thread_client_ci = CreateSpdkThreadOnCore

创建 spdk poller

void CreatePoller(void* ctx) {
uint64_t period_microseconds = 0;
g_poller_client_ci = spdk_poller_register(ClientPolling, NULL, period_microseconds);
}

如何绑定

spdk_thread_send_msg(spdk_thread_client_ci, CreatePoller, NULL);

如何基于spdk 无锁队列实现操作

比如下面场景,有两个函数都需要操作同一个容器:


func1(Container * c); func2(Contianer * c)

为了避免使用锁,实现对Container 的互斥访问,可以如下实现:

spdk_thread_send_message(spdk_thread_client_ci, func1, c)
.....
spdk_thread_send_message(spdk_thread_client_ci, func2, c)