Table of Contents
- Introduction
- Installation
- Handling Challenger

  | · Introduction · User Interface · Restarting · Log Files · Status · Maintenance · Threads

- Virtual Servers
- Configuration Examples
- Modules
- Filesystems
- RXML Tags
- Graphics
- Proxy
- Databases
- Miscellaneous Modules
- Security Considerations
- Scripting
- Frontpage
- Upgrading
- Third Party Extensions
- Portability
- Reporting Bugs
- Appendix

Threads
Challenger can use threads on operating systems that support them. When using threads several requests can be handled in parallel. The main advantage of this is that requests that take a long time to process will not block the server, and other requests will be served even if a previous request is still being processed. It is therefore recommended that you run with threads on all operating systems that supports it.

However, the speed gained by running with threads is usually limited. Most requests to a Challenger server take a very short time to handle, and such requests gain next to nothing by running in parallel. One exception is pages served over NFS from another computer. Fetching data over NFS is a slow, blocking operation, thereby benefiting from being able to run in parallel.

On multi-CPU machines the worst case scenario is that the overhead for thread synchronization makes the performance worse when using threads than when not using threads.

The number of threads Challenger will use is configured in the Global Variables/Number of threads to run variable. To disable threads altogether use the `--without-threads` option to the start -script.

Note that even if Challenger only uses one thread, modules can create threads for themselves, if they intend to do something that will take a long time.