Norman Tindall
NormanTindall at zdisk.net
Thu Aug 10 15:57:54 EDT 2006
Hello Jim, I describe you the session locking mechanizm as i see, correct me if i am wrong. As to lock subroutine in _apache we passing: 1 - server object 2 - session_id From this i can tell that in fact locked session_ids (session data locked indirect) +----------------------------------------------+---------------------+ | session_id | status | serv that aq lock | +----------------------------------------------+---------------------+ | 5540fda192a40b4acd084decdb6f66ed | locked | thread 1 server id | 9ec0c48867bff638b7a790c314ed52ff | locked | thread 4 server id | .. .. .. .. .. .. .. .. .. .. .. .. .... .... .... .... .. +------------------------------------------------------------------- ^ | ^ | ^ | 1)Lock | | | 4)Lock | 7)Lock | | | 3)release | | | 9) release | | | 6)release | | +-----------+ +--------------------+ +---------------- | thread 1 | | thread 2 | | thread 3 also +-----------+ +----------- trying to aquire | aquired lock | trying to on 5540fd.. aquire lock on | sess_id 5540fd.. but blocked | until thread 1 releases lock | 8) write | \ 5) Write | 2) Write | +--------------------------------------+ | ----->| session data (in file or mysql) | <--- +--------------------------------------+ Thread 1 locking sess_id, making manipulation with session data, writing it to file (or DBD or MySQL), release lock, then thread 2 locking that sess_id and so on.. So in fact locked session_id, while session locked indirect, because no manipulation can be made before lock aquire and so manipulation with same sess_id data is quened across threads. And if i right, my module from previous letter will work with lock. Am i right? -- Best regards, Norman mailto:NormanTindall at zdisk.net
|