| | 18 | '''Note''': This only covers the differences between models, not `C`/`C++`. |
| | 19 | |
| | 20 | == Fork == |
| | 21 | __Good__:: |
| | 22 | * A crash will only take down an individual build. |
| | 23 | * Less complex to work with (stateless) |
| | 24 | * Blocking interface keeps things realtime. |
| | 25 | |
| | 26 | __Bad__:: |
| | 27 | * Might require (slight) changes to how commands/builds are run. |
| | 28 | * When the master dies the slave needs to idle out could consume resources. |
| | 29 | * Potential to use more memory, however the daemon would be extremely small. |
| | 30 | |
| | 31 | == Select == |
| | 32 | __Good__:: |
| | 33 | * Single process |
| | 34 | * Low memory footprint |
| | 35 | |
| | 36 | __Bad__:: |
| | 37 | * Must keep an internal state and track all protocol traffic for each respective build. |
| | 38 | * Crashing will take down all builds, unless multiple slaves are launched which defeats the purpose of using select. |
| | 39 | |
| | 40 | == Thread == |
| | 41 | __Good__:: |
| | 42 | * Fast |
| | 43 | * Highly efficient usage of memory. |
| | 44 | |
| | 45 | __Bad__:: |
| | 46 | * Complex to write multi-platform |
| | 47 | * Crashing will take down all builds, unless multiple slaves are launched which defeats the purpose of using threads. |