在我的 const' 中 - 我希望仅在 'firstCommand' 之后调用 'secondCommand'。我尝试使用 EnterCriticalSection,但问题是,在哪里启动我的锁 - 如果我在构造函数中执行此操作(在 # 处),并在“firstCommand”(在 ## 处)之后释放锁,并尝试获取锁再次在'secondCommand'之前(在###),它可能无法工作,因为在###,即使锁被锁定 - 仍然可以调用 secondCommand - 因为锁定在同一个thead中产生(就像调用连续两次“锁定”和“锁定” - 不会出现死锁)。
另一方面,如果我在“firstCommand”(####)之前锁定并在“firstCommand”(##)之后立即释放,则在检查锁是否被锁定时 - 锁可能未初始化 - 这将导致问题。这是我的代码:
myClass::myClass (){
#
threadFunction();
###
secondCommand();
}
void myClass::threadFunction(){
DWORD threadID;
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)threadFunc,0, 0, &threadID);
}
threadFunc(){
####
firstCommand();
##
while(true){};
}
这似乎是一个简单的问题,但我已经尝试解决一个小时了。有人可以帮忙吗?