## Working with threads

### Thread API

mono_thread_attach
Prototype: mono_thread_attach

mono_thread_create
Prototype: mono_thread_create

mono_thread_current
Prototype: mono_thread_current

mono_thread_detach
Prototype: mono_thread_detach

mono_thread_exit
Prototype: mono_thread_exit

mono_thread_manage
Prototype: mono_thread_manage

mono_thread_new_init
Prototype: mono_thread_new_init

mono_threads_get_default_stacksize
Prototype: mono_threads_get_default_stacksize

mono_threads_install_cleanup
Prototype: mono_threads_install_cleanup

mono_threads_set_default_stacksize
Prototype: mono_threads_set_default_stacksize

mono_thread_stop
Prototype: mono_thread_stop

mono_thread_get_main
Prototype: mono_thread_get_main

mono_thread_set_main
void mono_thread_set_main (MonoThread *thread)

Parameters

> thread:
>   thread to set as the main thread

Remarks

This function can be used to instruct the runtime to treat thread as the main thread, ie, the thread that would normally execute the Main() method. This basically means that at the end of thread, the runtime will wait for the existing foreground threads to quit and other such details.
mono_pthread_key_for_tls
Prototype: mono_pthread_key_for_tls

### Monitors

mono_monitor_enter
Prototype: mono_monitor_enter

mono_monitor_exit
Prototype: mono_monitor_exit