我有三两班
Class A{
function A.1()
{
1. First calls B.2()
2. Checks for value X in class B.
}
}
Class B {
function B.1()
{
/*this function sets the variable X to true*/
}
function B.2()
{
/*Initiates the thread eventually that will start the function B.1 on different thread*/
}
}
我想修改它,以便 A.1() 应该等到在 B 类中设置/修改 X。这就是我的方法:
Class A{
function A.1()
{
1. First calls B.2()
**2. Call WaitforSet in class B**
3. Checks for value X in class B.
}
}
Class B {
/* Created one autoreset event S*/
function B.1()
{
/*this function sets the variable X to true*/
S.Set();
}
function B.2()
{
/*Initiates the thread eventually that will start the function B.1 on different thread*/
}
waitforSet()
{
S.waitone();
}
}
我不确定为什么这不起作用,因为它使两个线程都处于等待状态。我预计waitforSet()
函数应该让调用线程处于等待状态,内部将继续设置 X。当我检查当前线程的托管线程 ID 时waitforSet()
,B.1()
它们是不同的。
有人可以告诉我我在这里缺少什么或更好的方法来实现这一目标吗?
PS:我在 C# 中实现了这一点