ovs-dpdk中dpdk.c文件下dpdk_init函数中ovsthread_once_done(&once_enable);语句的作用
时间: 2024-05-22 16:14:39 浏览: 164
docker-ovs-dpdk:使用DPDK打开在用户空间中运行的vSwitch
&dpdk_init_once)函数的作用是确保dpdk_init函数只被调用一次。
ovsthread_once_done函数使用POSIX线程库中的pthread_once函数,它接受一个pthread_once_t类型的参数,该参数用来标识一个线程只能执行一次的代码块。在第一次调用该函数时,pthread_once函数将执行传入的函数指针,之后再次调用该函数时不会再次执行函数指针。
在ovs-dpdk中,dpdk_init_once变量被初始化为PTHREAD_ONCE_INIT,这意味着dpdk_init函数只会被执行一次。当ovsthread_once_done函数被调用时,如果dpdk_init函数已经被执行过了,则该函数不会再次执行dpdk_init函数,否则它将执行dpdk_init函数,并将dpdk_init_once变量设置为已完成状态,以确保dpdk_init函数只会被执行一次。
阅读全文