<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
Tony:<BR><BR>> Also, I am unconvinced that the current implementation of AssignSlot can ever<BR>> be correct without the critical section. It requires atomic update of both<BR>> the slots array pointer (with the new slots) *and* the array elements. This<BR>> requires a proper CS instead of non-blocking synchronization.<BR><BR>
 <BR>
I don't see it.<BR>
I could be wrong.<BR>
 <BR>
The writes are done within a critical section, to avoid racing with other writers.<BR>
 <BR>
Writes interact with readers in that:<BR>
 <BR>
            SUBARRAY (new_slots^, 0, n) := slots^;<BR>finish writing to the array elements<BR>
MemoryBarrier<BR>
            slots := new_slots;<BR><BR>
 <BR>
so readers don't see slots unless it has been fully initialized.<BR>
 <BR>
AssignSlots should also be able to be lock free via InterlockedCompareExchangePointer.<BR>
 <BR>
 <BR>
 - Jay<BR>
 <BR>                                          </body>
</html>