You've already forked linux-packaging-mono
Imported Upstream version 5.10.0.47
Former-commit-id: d0813289fa2d35e1f8ed77530acb4fb1df441bc0
This commit is contained in:
parent
88ff76fe28
commit
e46a49ecf1
@ -156,6 +156,23 @@ namespace MonoTests.System.Threading
|
||||
Assert.IsTrue (workerThreads == workerThreads_new, "#3");
|
||||
Assert.IsTrue (completionPortThreads == completionPortThreads_new, "#4");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SetMaxPossibleThreads ()
|
||||
{
|
||||
var maxPossibleThreads = 0x7fff;
|
||||
int maxWt, macCpt;
|
||||
|
||||
ThreadPool.SetMaxThreads (maxPossibleThreads, maxPossibleThreads);
|
||||
ThreadPool.GetMaxThreads (out maxWt, out macCpt);
|
||||
Assert.AreEqual (maxPossibleThreads, maxWt);
|
||||
Assert.AreEqual (maxPossibleThreads, macCpt);
|
||||
|
||||
ThreadPool.SetMaxThreads (maxPossibleThreads + 1, maxPossibleThreads + 1);
|
||||
ThreadPool.GetMaxThreads (out maxWt, out macCpt);
|
||||
Assert.AreEqual (maxPossibleThreads, maxWt);
|
||||
Assert.AreEqual (maxPossibleThreads, macCpt);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetAvailableThreads ()
|
||||
@ -199,5 +216,44 @@ namespace MonoTests.System.Threading
|
||||
|
||||
mre.WaitOne ();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AsyncLocalCapture ()
|
||||
{
|
||||
var asyncLocal = new AsyncLocal<int>();
|
||||
asyncLocal.Value = 1;
|
||||
int var_0, var_1, var_2, var_3;
|
||||
var_0 = var_1 = var_2 = var_3 = 99;
|
||||
var cw = new CountdownEvent (4);
|
||||
|
||||
var evt = new AutoResetEvent (false);
|
||||
ThreadPool.QueueUserWorkItem(state => {
|
||||
var_0 = asyncLocal.Value;
|
||||
cw.Signal ();
|
||||
}, null);
|
||||
|
||||
ThreadPool.UnsafeQueueUserWorkItem(state => {
|
||||
var_1 = asyncLocal.Value;
|
||||
cw.Signal ();
|
||||
}, null);
|
||||
|
||||
ThreadPool.RegisterWaitForSingleObject (evt, (state, to) => {
|
||||
var_2 = asyncLocal.Value;
|
||||
cw.Signal ();
|
||||
}, null, millisecondsTimeOutInterval: 1, executeOnlyOnce: true);
|
||||
|
||||
ThreadPool.UnsafeRegisterWaitForSingleObject (evt, (state, to) => {
|
||||
var_3 = asyncLocal.Value;
|
||||
cw.Signal ();
|
||||
}, null, millisecondsTimeOutInterval: 1, executeOnlyOnce: true);
|
||||
|
||||
Assert.IsTrue (cw.Wait (2000), "cw_wait");
|
||||
|
||||
Assert.AreEqual (1, var_0, "var_0");
|
||||
Assert.AreEqual (0, var_1, "var_1");
|
||||
Assert.AreEqual (1, var_2, "var_2");
|
||||
Assert.AreEqual (0, var_3, "var_3");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user