aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Util.cs
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2013-05-01 19:01:43 +0100
committerJustin Clark-Casey (justincc)2013-05-01 19:01:43 +0100
commit206fb306a7820cf593570e35ddfa8e7c5a10e449 (patch)
tree0ef0fdf42ddc0b63224af52b62b0bad42f62e352 /OpenSim/Framework/Util.cs
parentFix CAPS to work like they should - do not send caps to the viewer if they're... (diff)
downloadopensim-SC_OLD-206fb306a7820cf593570e35ddfa8e7c5a10e449.zip
opensim-SC_OLD-206fb306a7820cf593570e35ddfa8e7c5a10e449.tar.gz
opensim-SC_OLD-206fb306a7820cf593570e35ddfa8e7c5a10e449.tar.bz2
opensim-SC_OLD-206fb306a7820cf593570e35ddfa8e7c5a10e449.tar.xz
Update SmartThreadPool to latest version 2.2.3 with a major and minor change.
SmartThreadPool code comes from http://www.codeproject.com/Articles/7933/Smart-Thread-Pool This version implements thread abort (via WorkItem.Cancel(true)), threadpool naming, max thread stack, etc. so we no longer need to manually patch those. However, two changes have been made to stock 2.2.3. Major change: WorkItem.Cancel(bool abortExecution) in our version does not succeed if the work item was in progress and thread abort was not specified. This is to match previous behaviour where we handle co-operative termination via another mechanism rather than checking WorkItem.IsCanceled. Minor change: Did not add STP's StopWatch implementation as this is only used WinCE and Silverlight and causes a build clash with System.Diagnostics.StopWatch The reason for updating is to see if this improves http://opensimulator.org/mantis/view.php?id=6557 and http://opensimulator.org/mantis/view.php?id=6586
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/Util.cs20
1 files changed, 10 insertions, 10 deletions
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs
index bde4673..a3602e9 100644
--- a/OpenSim/Framework/Util.cs
+++ b/OpenSim/Framework/Util.cs
@@ -1840,7 +1840,7 @@ namespace OpenSim.Framework
1840 case FireAndForgetMethod.SmartThreadPool: 1840 case FireAndForgetMethod.SmartThreadPool:
1841 if (m_ThreadPool == null) 1841 if (m_ThreadPool == null)
1842 InitThreadPool(15); 1842 InitThreadPool(15);
1843 m_ThreadPool.QueueWorkItem(SmartThreadPoolCallback, new object[] { realCallback, obj }); 1843 m_ThreadPool.QueueWorkItem((cb, o) => cb(o), realCallback, obj);
1844 break; 1844 break;
1845 case FireAndForgetMethod.Thread: 1845 case FireAndForgetMethod.Thread:
1846 Thread thread = new Thread(delegate(object o) { realCallback(o); }); 1846 Thread thread = new Thread(delegate(object o) { realCallback(o); });
@@ -1910,15 +1910,15 @@ namespace OpenSim.Framework
1910 return sb.ToString(); 1910 return sb.ToString();
1911 } 1911 }
1912 1912
1913 private static object SmartThreadPoolCallback(object o) 1913// private static object SmartThreadPoolCallback(object o)
1914 { 1914// {
1915 object[] array = (object[])o; 1915// object[] array = (object[])o;
1916 WaitCallback callback = (WaitCallback)array[0]; 1916// WaitCallback callback = (WaitCallback)array[0];
1917 object obj = array[1]; 1917// object obj = array[1];
1918 1918//
1919 callback(obj); 1919// callback(obj);
1920 return null; 1920// return null;
1921 } 1921// }
1922 1922
1923 #endregion FireAndForget Threading Pattern 1923 #endregion FireAndForget Threading Pattern
1924 1924