# POSIX Threads support

The threads can be manipulated and synchronized using the classes `Thread`,
`Mutex` and `Barrier`.

This group also provides two optional modules with thread-safe collections:

* `redef_collections` redefines existing collection to make them thread-safe.
  This incures a small overhead in all usage of the redefined collections.
* `concurrent_collections` intro new thread-safe collections.

Theses services are implemented using the POSIX threads.

You can also use the `is threaded` annotation on methods, which makes them run on their own thread.
Methods with return value or self calls are not supported.

## Known limitations:

* Most services from the Nit library are not thread-safe. You must manage
  your own mutex to avoid conflicts on shared data.
* FFI's global references are not thread-safe.

## For more information:

* See: `man pthreads`
* See: `examples/concurrent_array_and_barrier.nit`

# POSIX Threads support

The threads can be manipulated and synchronized using the classes `Thread`,
`Mutex` and `Barrier`.

This group also provides two optional modules with thread-safe collections:

* `redef_collections` redefines existing collection to make them thread-safe.
  This incures a small overhead in all usage of the redefined collections.
* `concurrent_collections` intro new thread-safe collections.

Theses services are implemented using the POSIX threads.

You can also use the `is threaded` annotation on methods, which makes them run on their own thread.
Methods with self calls are not supported.

A method or function annotated with `is threaded` has its return value changed during compilation.
You will get a subclass of `Thread`, even if there wasn't a return value before. You can know if the threaded method is done with the `is_done` boolean from `Thread`.
A call to the `join` method will block the execution until the threaded method is done, or immediatly return if it's already done.
`join` will return an object typed with the orginial return type, or `null` if there wasn't.

## Known limitations:

* Most services from the Nit library are not thread-safe. You must manage
  your own mutex to avoid conflicts on shared data.
* FFI's global references are not thread-safe.

## For more information:

* See: `man pthreads`
* See: `examples/concurrent_array_and_barrier.nit`
* See: ̀ examples/threaded_example.nit`

Add documentation for threaded methods with return value
Add documentation for threaded methods with return value

Signed-off-by: BlackMinou <329309c4c29ba1728fdd0d36d24025b480503bab@viacesi.fr>
