On 01 Sep 2001 17:59:55 -0400, Brian wrote:
> I notice that storeAufsClose does this:
> if (storeAufsSomethingPending(sio)) {
> aiostate->flags.close_request = 1;
> return;
> }
>
> and storeAufsReadDone does this:
> aiostate->flags.inreaddone = 0;
> if (aiostate->flags.close_request)
> storeAufsIOCallback(sio, errflag);
>
> So my question is...
> Can these two run close enough together that storeAufsSomethingPending
> returns true, but storeAufsClose doesn't set the flag in time to catch
> storeAufsReadDone?
As in "is there a potential race between storeAufsClose and
storeAufsReadDone on the same sio structure?"
No.
storeAufsClose is called from a single thread - squids main thread.
storeAufsReadDone is a callback for the actual async io functions, and
is also called from the same thread.
For a race, we would need the squid main thread to context switch after
storeAufsSomethingPending(sio), but before setting the flag, and before
squid had another timeslice, for a different thread to call into
storeAufsReadDone.
As the same thread calls both functions, that cannot happen.
Why do you ask?
Rob
Received on Sun Sep 02 2001 - 02:41:01 MDT
This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 17:02:01 MST