[PLUG] high cpu utilization
shredder12 at linuxers.org
Wed Nov 11 11:58:52 IST 2009
I think you should have a look at select() function, it provides a
similar functionality. It allows you to monitor multiple file
descriptors ( i used them in sockets) and its really useful when the
descriptors are supposed to wait for read/write. You can constantly
check which FDs are ready to read/write. This will definitely solve your
high cpu consumption problem.
Kapil Agrawal wrote:
> I am stuck on the following problem, please help me in finding a solution.
> In my C program, I have two threads,
> thd_r reading video realtime from an hardware and thd_w writing to a file.
> thd_r is very slow (as it real time video capture) as compared to thd_w. To
> push data from one thread to another push a buffer in a g_queue which get
> pulled in the thd_w and used. But since thd_r is much slower then thd_w, I
> have to wait in thd_w again and again in a while loop polling for the data
> to be pushed queue from thd_r. Because of this polling using while, huge CPU
> is getting consumed.
> This I try fixing by putting a usleep in the while loop , hence there is
> a small decrease in cpu utilization.
> But its a not so good hack, nor a right fix. Right thing would be that I put
> my thd_w in sleep till there is no data in the queue and once thd_r pushes
> some data in queue the thd_w should wake up to consume. But I am not sure
> how can I achieve this ?
> Can someone please point me to right solution.
> Note: Both these threads are completely independent and I can't share there
> memory space etc. I dont have control over the hardware so that I can send
> some interupts etc.
> Looking forwrad to a solution.
Be a Linuxer - http://linuxers.org
Join us on Facebook http://www.facebook.com/pages/Linuxers/192912576144
More information about the Plug-mail