On Thu, 4 Sep 2008 23:36:01 +0300, Anton Vodonosov avodonosov@yandex.ru wrote:
Yes, such a contract may be used too, although in this case it looks to me that user must take care of locking in virtually 100% of cases
- even single handler may be called from different threads for the
same session.
Yes, you're right. I never had problems with this so far, but maybe this is because I've rarely used Hunchentoot with SMP Lisps.
In this case, you don't want to use a global lock, though, and I wonder how expensive it is to have one lock per session. I have to think about this a bit...
In fact my attention to this question was drawn by the fact that (SETF (SESSION-VALUE )) uses lock, but other functions do not.
The lock in (SETF SESSION-VALUE) is clearly unneeded as START-SESSION already has a lock. As the name says, *SESSION-DATA-LOCK* was only meant to protect *SESSION-DATA*.
If you wonder why am I poking in the hunchentoot code
Oh, that's fine. Feel free to poke around and find more bugs... :)