I’m programming a network protocol over UDP, using C/C++ in Linux. The protocol must provide reliability, so I’m going to simulate something like TCP retransmission over UDP.
This can be done using pthreads or fork, but I believe that’s an overkill and consumes a lot of system resources. A better approach is to exploit a scheduler.
I probably can’t use Linux internal scheduler, since I’m programming in user space. Are there standard C/C++ libraries to accomplish this? How about 3rd party libraries?
Edit: Some people asked why I’m doing this. Why not use the TCP instead?
The answer is, since I’m implementing a tunneling protocol. If someone tunnels TCP over TCP, the efficiency will drop considerably. Here’s more info Why TCP Over TCP Is A Bad Idea.
Here’s a sample of how to accomplish asynchronous coroutines with Boost. Boost manages the overhead of creating a thread to run the coroutine in this case so that you don’t need to. If you would like the kernel to manage your interrupts, you can use alarm & setitimer, but they’re very limited in what they can do.
Any solution will include threads, forks, or some variant of them at some level, unless you synchronously manage the transmission in the main thread using something like select().