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)