mirror of
https://github.com/3proxy/3proxy.git
synced 2026-11-05 09:25:49 +08:00
With -L, or loopmode on for the services which follow, the clients of a TCP service are served on event loops: loops threads (by default one for each CPU) each run a loop, and each client is given in turn to one of them, which serves it on a fiber with the same code a thread runs. Its waits in sockpoll() wait in the loop, its sockets and a timer registered there, and the fiber goes on once one is ready or the time is out; a sleep is a timer alone. A client costs a stack, as large as its thread's would be, and no thread. The loops start with the first client served on one and run as long as the process; each keeps up to 256 idle fibers for its next clients. srvspawn() posts the client to its loop once it is counted, what is posted made before so that posting cannot fail. A service whose clients cannot share a thread (threadperclient), or listening for connections back (-R), all of its clients waiting for one socket, which a loop waits for once, keeps a thread for each client, as does every service of a build or a processor without fibers, and the standalone services. tests/run.py --loopmode runs every configuration with loopmode on, on two loops. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| 3proxy_crypt.8 | ||
| 3proxy.8 | ||
| 3proxy.cfg.5 | ||
| ftppr.8 | ||
| imapp.8 | ||
| pop3p.8 | ||
| proxy.8 | ||
| smtpp.8 | ||
| socks.8 | ||
| tcppm.8 | ||
| tlspr.8 | ||
| udppm.8 | ||