Add an async inventory details sender to respond to FetchInventory packets.

If a user with a very large inventory right-clicks on their "My Inventory" folder, viewer 1 code will send a massive number of Fetchinventory requests.
Even though each is handled asynchronously via a pool thread, the sheer frequency of requests overwhelms the pool and freezes inbound packet handling.
This change makes the first Fetchinventory thread also handle subsequent requests, freeing up the other threads.
Further efficiencies could be made by handling all the items in a particular FetchInventory request together, rather than separately.
This commit is contained in:
Justin Clark-Casey (justincc)
2011-07-01 21:25:40 +01:00
parent 2d2c29ef3e
commit 9f72fbcb75
5 changed files with 165 additions and 28 deletions

View File

@@ -737,7 +737,7 @@ namespace OpenSim.Framework
bool IsActive { get; set; }
/// <value>
/// Determines whether the client is logging out or not.
/// Determines whether the client is or has been removed from a given scene
/// </value>
bool IsLoggingOut { get; set; }