对于我正在编写的测试用例,我想同时启动 2 个线程,目的是强制竞争条件或死锁,以确保我的测试代码正确处理这种情况。我不完全确定如何指示线程在完全相同的时间启动。有人可以告诉我如何指示 2 个线程同时启动吗?
worker1.Start() 和 worker2.Start() 调用几乎同时进行,但距离不足以暴露我正在尝试修复的错误。
这是我的测试用例。
[TestMethod]
public void test()
{
var target = new TestableErqProtocolTools();
var firstUri = HEDataScope.Scope.BusinessObjectServerUris[0].AbsoluteUri;
var worker1 = new Thread(new ThreadStart(target.TestableAddServerUrlsFromScope));
var worker2 = new Thread(new ThreadStart(target.TestableAddServerUrlsFromScope));
var startEvent = new EventWaitHandle(false, EventResetMode.ManualReset);
worker1.Start();
worker2.Start();
StringAssert.StartsWith(target.DefaultRemoteServerUrl, firstUri, "DefaultRemoteServerUrl is {0}"
, String.IsNullOrEmpty(target.DefaultRemoteServerUrl) ? "<empty>" : target.DefaultRemoteServerUrl);
}