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);