Threads under DPDK are called EAL threads.
The EAL thread is bound one-to-one with the CPU core by default. In this case, there is some real-time performance, and it is a waste to monopolize the CORE for tasks with low computational load. The following solutions are probably found.
1. dpdk serivce core
The N-to-M mapping relationship between workload and core can be implemented.
It is to provide a set of cores to implement serivce tasks. As the name suggests, service is a short-term task, and it is applicable to the application scenarios of multiple short-term tasks.
[dpdk] service core
2. LThread,
The N-to-M mapping relationship between workload and core can be implemented.
The example of dpdk provides a lightweight thread solution called lthread.
It is characterized by the use of cooperative thread scheduling. For preemptive task scheduling and cooperative task mobilization, see:
https://blog.csdn.net/jjavaboy/article/details/43340629
Documentation for lthread:
https://dpdk.org/doc/guides/sample_app_ug/performance_thread.html#the-l-thread-subsystem
1. This library is not in the main code of dpdk, there may be some problems in stability.
2. Since it is a collaborative task scheduling, there must be some attention to the logic implementation of each thread.
3. Coroutines
Without detailed research, you can refer to:
http://www.yeolar.com/note/2013/02/17/coroutines/
https://coolshell.cn/articles/10975.html
Official site of the library: http://dunkels.com/adam/pt/
4. pthread
Regular OS thread.
The characteristic is that many RTE dependencies cannot be used.