version 1.121, 2007/07/20 18:43:40
|
version 1.121.2.2, 2008/09/25 18:26:38
|
|
|
Message* msg = new SocketMessage( | Message* msg = new SocketMessage( |
entries[indx].socket, events); | entries[indx].socket, events); |
entries[indx]._status = _MonitorEntry::BUSY; | entries[indx]._status = _MonitorEntry::BUSY; |
|
SocketHandle sock = entries[indx].socket; |
_entry_mut.unlock(); | _entry_mut.unlock(); |
q->enqueue(msg); | q->enqueue(msg); |
_entry_mut.lock(); | _entry_mut.lock(); |
| |
|
// If _entries[indx] no longer refers to the same |
|
// socket, then another thread has changed _entries[]. |
|
// We must return now and skip the code below that |
|
// updates _entries[indx]. |
|
if (Uint32(indx) >= _entries.size() || |
|
_entries[indx].socket != sock) |
|
{ |
|
return; |
|
} |
|
|
// After enqueue a message and the autoEntryMutex has | // After enqueue a message and the autoEntryMutex has |
// been released and locked again, the array of | // been released and locked again, the array of |
// entries can be changed. The ArrayIterator has be | // entries can be changed. The ArrayIterator has be |
|
|
} | } |
} | } |
| |
int index; |
for (int index = 1; index < (int)_entries.size(); index++) |
for (index = 1; index < (int)_entries.size(); index++) |
|
{ | { |
try | try |
{ | { |