DPDK线程启动方式

dpdk线程

rte_eal_init执行时会在每个lcore通过pthread_create创建一个线程(eal_thread_loop)并绑定到对应的lcore上,
每个线程拥有一对管道fd用于与master线程通信。
线程创建通过read管道阻塞。
master线程调用rte_eal_remote_launch创建线程实际上是通过write管道唤醒eal_thread_loop,再执行
rte_eal_remote_launch传入的函数。

几种用户线程初始化方式

在每个slave核上创建线程

RTE_LCORE_FOREACH_SLAVE(lcore_id) {
        rte_eal_remote_launch(user_loop, param, lcore_id);
}

在除了master核的其他核上创建线程

rte_eal_mp_remote_launch(user_loop, param, SKIP_MASTER);

dpdk线程

猜你喜欢

转载自www.cnblogs.com/zl-yang/p/11023893.html
今日推荐