Introduction
  Installing
  Handling
    User interface
    Restarting
    Threads
    Log files
    Status
    Maintenance
  Virtual servers
  Modules
  Filesystems
  RXML tags
  Graphics
  Proxy
  Miscellaneous modules
  Security considerations
  Scripting
  Databases
  LDAP
  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.