# Creating and managing client threads

## Functions

int | jack_client_real_time_priority (jack_client_t *)
int | jack_client_max_real_time_priority (jack_client_t *)
int | jack_acquire_real_time_scheduling (pthread_t thread, int priority)
int | jack_client_create_thread (jack_client_t *client, pthread_t *thread, int priority, int realtime, void *(*start_routine)(void *), void *arg)
int | jack_drop_real_time_scheduling (pthread_t thread)

## Function Documentation

int jack_acquire_real_time_scheduling | ( | pthread_t | thread,
|  | int | priority |
| ) |  |  |

Attempt to enable realtime scheduling for a thread. On some systems that may require special privileges.

Parameters:

  | thread | POSIX thread ID.
  | priority | requested thread priority.

Returns:
  0, if successful; EPERM, if the calling process lacks required realtime privileges; otherwise some other error number.

int jack_client_create_thread | ( | jack_client_t * | client,
|  | pthread_t * | thread,
|  | int | priority,
|  | int | realtime,
|  | void *(*)(void *) | start_routine,
|  | void * | arg |
| ) |  |  |

Create a thread for JACK or one of its clients. The thread is created executing start_routine with arg as its sole argument.

Parameters:

  | client | the JACK client for whom the thread is being created. May be NULL if the client is being created within the JACK server.
  | thread | place to return POSIX thread ID.
  | priority | thread priority, if realtime.
  | realtime | true for the thread to use realtime scheduling. On some systems that may require special privileges.
  | start_routine | function the thread calls when it starts.
  | arg | parameter passed to the start_routine.

Returns:
  0, if successful; otherwise some error number.

int jack_client_max_real_time_priority | ( | jack_client_t * |  | ) |

Returns:
  if JACK is running with realtime scheduling, this returns the maximum priority that a JACK client thread should use if the thread is subject to realtime scheduling. Otherwise returns -1.

int jack_client_real_time_priority | ( | jack_client_t * |  | ) |

Returns:
  if JACK is running with realtime scheduling, this returns the priority that any JACK-created client threads will run at. Otherwise returns -1.

int jack_drop_real_time_scheduling | ( | pthread_t | thread | ) |

Drop realtime scheduling for a thread.

Parameters:

  | thread | POSIX thread ID.

Returns:
  0, if successful; otherwise an error number.