Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

I'm looking to find a way to receive a UDP packet via interrupts vs. some form of polling in C.  I am trying to minimize CPU resources as much as possible.  Thanks!

Posted on 2009-04-04
1
282 Views
Last Modified: 2013-11-29
I'm looking to find a way to receive a UDP packet via interrupts vs. some form of polling in C.  I am trying to minimize CPU resources as much as possible.  Thanks!
0
Comment
Question by:rounders1086
1 Comment
 
LVL 40

Accepted Solution

by:
mrjoltcola earned 500 total points
ID: 24068148
1) select() with reasonable timeout value is a great, simple way to poll while not blocking indefinitely. select() for 100 milliseconds at a time lets your loop process 10 times a second if needed. If a packet arrives, the select will return immediately without waiting for 100ms.

2) A thread that just issues a blocking read()/recvfrom() is probably as cpu minimal as you can get.

Are you only interested in processes the packet, or are there other tasks that must be carried out in parallel? If so, either option above will work, but if you want to completely decouple the tasking so a long-running background task does not block the network messaging, go with a thread.

There are a few other ways, like async io receiving SIGIO to your process, then you still have to call select() to find which descriptor is ready. I prefer alternatives above to that.

If these aren't satisfactory there are other ways, including Linux non-portable ways.
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
jump server vs push server 6 177
Create remote access home server 4 109
MPLS Network Question 2 65
Eigrp versus OSPF in a ring topology 3 85
The article explains the protocols and technology which is involved when two computers on different TCP/IP networks communicate with each other. In the diagram, a router is used to segregate two networks. The networks are 192.168.1.0/24 and 192…
Windows programmers of the C/C++ variety, how many of you realise that since Window 9x Microsoft has been lying to you about what constitutes Unicode (http://en.wikipedia.org/wiki/Unicode)? They will have you believe that Unicode requires you to use…
The goal of this video is to provide viewers with basic examples to understand and use structures in the C programming language.
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use for-loops in the C programming language.

856 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question