Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Realtime Programing on MacOSX



*This message was transferred with a trial version of CommuniGate(tm) Pro*
On May 18, 2004, at 18:44, Scott Lamb wrote:
On 18 May 2004, at 5:20 PM, RJ Auburn wrote:
I have a requirement that my thread wake up every 20ms no matter what. When I create timer using setitimer() it does indeed fire within about 1ms. The only problem is that I have with this model is that the signal gets dispatched to a random thread instead of my signal handling thread.

You want pthread_sigmask(); block SIGALRM in all threads but the one you want to receive it.

The only issue with that is that I do not have full control over all the threads in the app. In this case my code is being loaded inside a java process using JNI.

The other approach I looked into was to just call usleep() for the proper amount of time but the accuracy is very different. With that setup I get delays of several extra ms.

You might have better luck with nanosleep() than usleep().

Or maybe you could go directly to the Mach layer. If you peek at Libc/gen/nanosleep.c in Darwin CVS, you'll see that it's implemented with calls to clock_get_time() and clock_sleep_trap().

I will have to take a look at this stuff. Thanks for the heads up.

But my impression is that Mach is really not a real-time system, so I'm not sure how precise either way will be. A while ago, bbraun and landorf on #opendarwin were telling horror stories about signal latency. Maybe someone with first-hand knowledge will give more info.

When using the setitimer() approach it seemed to be working well once I added a call to thread_policy_set() to set the proper real time settings. My issues came up when running more JVM threads where it would start running the timer on threads that had not been set with the real time priority.

Thanks for the pointers so far,

RJ
_______________________________________________
darwin-development mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/darwin-development
Do not post admin requests to the list. They will be ignored.


References: 
 >Realtime Programing on MacOSX (From: RJ Auburn <email@hidden>)
 >Re: Realtime Programing on MacOSX (From: Scott Lamb <email@hidden>)



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.