mirror of
https://github.com/opensim/opensim.git
synced 2026-08-07 09:45:47 +08:00
Lock the heartbeat against multiple invocations. May prevent deadlocks and/or
runaway thread use
This commit is contained in:
@@ -137,6 +137,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
protected IAssetService m_AssetService = null;
|
||||
protected IAuthorizationService m_AuthorizationService = null;
|
||||
|
||||
private Object m_heartbeatLock = new Object();
|
||||
|
||||
public IAssetService AssetService
|
||||
{
|
||||
get
|
||||
@@ -942,6 +944,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
/// <param name="e"></param>
|
||||
private void Heartbeat(object sender)
|
||||
{
|
||||
if (!Monitor.TryEnter(m_heartbeatLock))
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
Update();
|
||||
@@ -952,6 +957,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
}
|
||||
finally
|
||||
{
|
||||
Monitor.Pulse(m_heartbeatLock);
|
||||
Monitor.Exit(m_heartbeatLock);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user