aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
authorJohn Hurliman2009-10-22 12:33:23 -0700
committerJohn Hurliman2009-10-22 12:33:23 -0700
commitb2ed348aa2746fbf034b713d006e40366c479d5a (patch)
tree26c114e88f54e64e1fdf17dcc7de1e54165db2bc /OpenSim/Region/Framework
parentMerge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff)
downloadopensim-SC_OLD-b2ed348aa2746fbf034b713d006e40366c479d5a.zip
opensim-SC_OLD-b2ed348aa2746fbf034b713d006e40366c479d5a.tar.gz
opensim-SC_OLD-b2ed348aa2746fbf034b713d006e40366c479d5a.tar.bz2
opensim-SC_OLD-b2ed348aa2746fbf034b713d006e40366c479d5a.tar.xz
Implemented a Watchdog class. Do not manually create Thread objects anymore, use Watchdog.StartThread(). While your thread is running call Watchdog.UpdateThread(). When it is shutting down call Watchdog.RemoveThread(). Most of the threads in OpenSim have been updated
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs20
1 files changed, 10 insertions, 10 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 5005ac9..4b87f92 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -81,8 +81,6 @@ namespace OpenSim.Region.Framework.Scenes
81 81
82 protected Timer m_restartWaitTimer = new Timer(); 82 protected Timer m_restartWaitTimer = new Timer();
83 83
84 protected Thread m_updateEntitiesThread;
85
86 public SimStatsReporter StatsReporter; 84 public SimStatsReporter StatsReporter;
87 85
88 protected List<RegionInfo> m_regionRestartNotifyList = new List<RegionInfo>(); 86 protected List<RegionInfo> m_regionRestartNotifyList = new List<RegionInfo>();
@@ -945,11 +943,8 @@ namespace OpenSim.Region.Framework.Scenes
945 HeartbeatThread = null; 943 HeartbeatThread = null;
946 } 944 }
947 m_lastUpdate = Environment.TickCount; 945 m_lastUpdate = Environment.TickCount;
948 HeartbeatThread = new Thread(new ParameterizedThreadStart(Heartbeat)); 946
949 HeartbeatThread.SetApartmentState(ApartmentState.MTA); 947 HeartbeatThread = Watchdog.StartThread(Heartbeat, "Heartbeat for region " + RegionInfo.RegionName, ThreadPriority.Normal, false);
950 HeartbeatThread.Name = string.Format("Heartbeat for region {0}", RegionInfo.RegionName);
951 HeartbeatThread.Priority = ThreadPriority.AboveNormal;
952 HeartbeatThread.Start();
953 } 948 }
954 949
955 /// <summary> 950 /// <summary>
@@ -976,12 +971,13 @@ namespace OpenSim.Region.Framework.Scenes
976 /// <summary> 971 /// <summary>
977 /// Performs per-frame updates regularly 972 /// Performs per-frame updates regularly
978 /// </summary> 973 /// </summary>
979 /// <param name="sender"></param> 974 private void Heartbeat()
980 /// <param name="e"></param>
981 private void Heartbeat(object sender)
982 { 975 {
983 if (!Monitor.TryEnter(m_heartbeatLock)) 976 if (!Monitor.TryEnter(m_heartbeatLock))
977 {
978 Watchdog.RemoveThread();
984 return; 979 return;
980 }
985 981
986 try 982 try
987 { 983 {
@@ -998,6 +994,8 @@ namespace OpenSim.Region.Framework.Scenes
998 Monitor.Pulse(m_heartbeatLock); 994 Monitor.Pulse(m_heartbeatLock);
999 Monitor.Exit(m_heartbeatLock); 995 Monitor.Exit(m_heartbeatLock);
1000 } 996 }
997
998 Watchdog.RemoveThread();
1001 } 999 }
1002 1000
1003 /// <summary> 1001 /// <summary>
@@ -1146,6 +1144,8 @@ namespace OpenSim.Region.Framework.Scenes
1146 1144
1147 if ((maintc < (m_timespan * 1000)) && maintc > 0) 1145 if ((maintc < (m_timespan * 1000)) && maintc > 0)
1148 Thread.Sleep(maintc); 1146 Thread.Sleep(maintc);
1147
1148 Watchdog.UpdateThread();
1149 } 1149 }
1150 } 1150 }
1151 1151