mò á¸Ec@s-dkZdklZdfd„ƒYZdS(N(sZServerPublishert ZRendevouscBs,tZdZdd„Zd„Zd„ZRS(s‹Worker thread pool For better or worse, we hide locking sementics from the worker threads. The worker threads do no locking. icCs´tiƒ}|i|_|i|_g}|ggf|_ |iƒz\xU|djoGtiƒ}|iƒ|i |ƒti t|ifƒ|d}qLWWd|iƒXdS(Nii(tthreadt allocate_locktsynctacquiretselft_acquiretreleaset_releasetpoolt_liststntltappendtstart_new_threadtZServerPublishertaccept(RR R RR ((t:/data/zmath/zope/lib/python/ZServer/PubCore/ZRendezvous.pyt__init__s"          cCs’|iƒzv|i\}}}xP|pH|iƒ}|i|ƒ|i ƒ|i ƒ|iƒ|i|ƒq"W|idƒSWd|i ƒXdS(sŠReturn a request from the request queue If no requests are in the request queue, then block until there is nonw. iN( RRR R trequeststreadytpopR R RR(RRRR R ((RR1s      cCsc|iƒzG|i\}}}|i|||fƒ|o|i ƒi ƒnWd|i ƒXdS(s'Queue a request for processing N( RRR R RRR tnametrequesttresponseRRR(RRRRRRR ((RthandleUs (t__name__t __module__t__doc__RRR(((RRs   $(RRR(RRR((Rt?s