Task policy of an ANSI C program

Hi,

I have developed and ported a sequencer to Apple macOS. It is written in ANSI C and uses Gtk+-3.0 (Gimp Toolkit) for UI.

This toolkit uses some Cocoa specific backend, note there are different backends for different platforms available.

After some research I have found this:

https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/KernelProgramming/scheduler/scheduler.html#//apple_ref/doc/uid/TP30000905-CH211-BABCHEEB

The function I wanted to use was:

Code Block
thread_policy_set()


But the header file doesn't contain it:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/mach/task_policy.h

So was it deprecated? Howto do this, nowadays?


Code Block
struct task_category_policy tcatpolicy;
int ret;
tcatpolicy.role = TASK_FOREGROUND_APPLICATION;
if((ret = task_policy_set(mach_task_self(),
TASK_CATEGORY_POLICY, (thread_policy_t)&tcatpolicy,
TASK_CATEGORY_POLICY_COUNT)) != KERN_SUCCESS) {
fprintf(stderr, "set_my_task_policy() failed.\n");
}


Because the UI animation performance is really bad. The threads interfacing CoreAudio are fine.

The UI thread is usually the main thread of the process.