smartthreadpool: add pool option SuppressFlow and test it on main smart?? pool (may go bad)
This commit is contained in:
12
ThirdParty/SmartThreadPool/STPStartInfo.cs
vendored
12
ThirdParty/SmartThreadPool/STPStartInfo.cs
vendored
@@ -17,6 +17,7 @@ namespace Amib.Threading
|
||||
private bool _enableLocalPerformanceCounters;
|
||||
private string _threadPoolName = SmartThreadPool.DefaultThreadPoolName;
|
||||
private int? _maxStackSize = SmartThreadPool.DefaultMaxStackSize;
|
||||
private bool _supressflow = false;
|
||||
|
||||
public STPStartInfo()
|
||||
{
|
||||
@@ -39,6 +40,7 @@ namespace Amib.Threading
|
||||
_threadPoolName = stpStartInfo._threadPoolName;
|
||||
_areThreadsBackground = stpStartInfo.AreThreadsBackground;
|
||||
_apartmentState = stpStartInfo._apartmentState;
|
||||
_supressflow = stpStartInfo._supressflow;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -191,5 +193,15 @@ namespace Amib.Threading
|
||||
_maxStackSize = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool SuppressFlow
|
||||
{
|
||||
get { return _supressflow; }
|
||||
set
|
||||
{
|
||||
ThrowIfReadOnly();
|
||||
_supressflow = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
24
ThirdParty/SmartThreadPool/SmartThreadPool.cs
vendored
24
ThirdParty/SmartThreadPool/SmartThreadPool.cs
vendored
@@ -608,12 +608,24 @@ namespace Amib.Threading
|
||||
}
|
||||
|
||||
// Create a new thread
|
||||
|
||||
Thread workerThread =
|
||||
_stpStartInfo.MaxStackSize.HasValue
|
||||
? new Thread(ProcessQueuedItems, _stpStartInfo.MaxStackSize.Value)
|
||||
: new Thread(ProcessQueuedItems);
|
||||
|
||||
Thread workerThread;
|
||||
if(_stpStartInfo.SuppressFlow)
|
||||
{
|
||||
using(ExecutionContext.SuppressFlow())
|
||||
{
|
||||
workerThread =
|
||||
_stpStartInfo.MaxStackSize.HasValue
|
||||
? new Thread(ProcessQueuedItems, _stpStartInfo.MaxStackSize.Value)
|
||||
: new Thread(ProcessQueuedItems);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
workerThread =
|
||||
_stpStartInfo.MaxStackSize.HasValue
|
||||
? new Thread(ProcessQueuedItems, _stpStartInfo.MaxStackSize.Value)
|
||||
: new Thread(ProcessQueuedItems);
|
||||
}
|
||||
// Configure the new thread and start it
|
||||
workerThread.IsBackground = _stpStartInfo.AreThreadsBackground;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user