Beginning to restructure the task and thread system.
This defines the thread and task system better.
This commit is contained in:
35
README.md
35
README.md
@ -1 +1,36 @@
|
||||
# Apprentice #
|
||||
A task based thread scheduling library. It will track and maintain
|
||||
compute and blocking threads. The scheduler will then handle issuing tasks
|
||||
amoung the threads it maintains.
|
||||
|
||||
## Threads ##
|
||||
Threads are implemented using the Rust standard library threads. These will
|
||||
be managed by a scheduler. Each scheduler has two types of threads that it
|
||||
distinguishes against. Blocking and Compute.
|
||||
|
||||
### Blocking ###
|
||||
Blocking threads are threads with tasks that will block while they are
|
||||
being processed. Tasks that do not block can be run here as well if you need
|
||||
to spawn more threads than the scheduler keeps alive for compute threads.
|
||||
However, non blocking tasks would be better run on a compute thread.
|
||||
|
||||
### Compute ###
|
||||
Compute threads are threads with tasks that will never block. This is
|
||||
a strict requirement that the programmer must adhere to. Compute threads and
|
||||
task sharing will not work if all the available compute threads are blocked.
|
||||
|
||||
## Tasks ##
|
||||
Tasks are the thread safe portions of code that you wish to write. These
|
||||
can be blocking or non blocking. If a task is marked as Immortal, then like
|
||||
the pheonix, when it is finished processing the reset function will be called
|
||||
and the task will be set to run again. By default, however, tasks are Mortal
|
||||
and will not be reset and reprocessed.
|
||||
|
||||
## Scheduler ##
|
||||
The scheduler creates and maintains all the compute and blocking threads
|
||||
it needs to run and processs tasks given to it. The scheduler will destroy
|
||||
threads that it determines are not needed. You can create multiple schedulers
|
||||
and each one will maintain its own set of threads and tasks. A single, program
|
||||
wide scheduler, can be created and accessed by libraries that need to spawn
|
||||
tasks as well. It is recommended to use this as your main scheduler and it
|
||||
can be set and retieved by your program.
|
||||
|
Reference in New Issue
Block a user