- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在我的 const' 中 - 我希望 'secondCommand' 仅在 'firstCommand' 之后被调用。我尝试使用 EnterCriticalSection,但问题是,从哪里启动我的锁 -如果我在构造函数中执行此操作(在##),并在“firstCommand”(在##)之后释放锁,并尝试在“secondCommand”(在###)之前再次获取锁,它可能无法工作,因为在###,即使锁被锁定 - secondCommand 仍然可以被调用 - 因为锁定是在同一个 thead 中获得的(就像连续两次调用“lock”和“lock”一样 - 不会有死锁)。
另一方面,如果我在“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){};
}
这似乎是一个简单的问题,但我已经尝试解决一个小时了。有人可以帮忙吗?
最佳答案
我认为您最好使用事件:查看 CreateEvent , SetEvent和 WaitForSingleObject
您将在构造函数中创建事件,在“###”处等待它,并在“##”处设置它。您可能应该检查 WaitForSingleObject 的返回值;如果成功,它将是 WAIT_OBJECT_0。
关于windows - Windows 上的 EnterCriticalSection 和 CRITICAL_SECTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16816411/
我有以下代码来创建线程来完成一些工作(为清楚起见,省略了部分)。 CRITICAL_SECTION gCS; class Locker { public: Locker(CRI
这是我的代码的一小部分: CRITICAL_SECTION _cs; InitializeCriticalSection(&_cs); void lock() { if (_initizal
有没有办法在 EnterCriticalSection() 上设置超时?有 TryEnterCriticalSection(),但这需要我旋转或使用 Sleep()。 最佳答案 没有办法对临界区进行定
好的,我正在编译一个使用 Chromium Embedded Framework 3 的项目.我在 Visual Studio 2013 RC 中使用 Windows 7 64 位。 CEF3 不支持
我正在尝试在 Eclipse IDE 和 Debug模式下的 Windows 7 操作系统上创建邮箱。我正在尝试使用 Eclipse 在 Windows 中创建类似邮箱的 RTOS(实时操作系统)。
我正在开发一个多线程应用程序,它使用关键部分来同步一组实体。该数组保存在一个结构中,如下所示。 pe 数组的每个成员都包含自己的 criticalSection,它总是在访问该成员之前声明(我已经检查
我需要使用来自多个线程的数组,因此我使用 CRITICAL SECTION 为其提供对数据的独占访问权限。 这是我的模板: #include "stdafx.h" #ifndef SHAREDVECT
是否存在 EnterCriticalSection() 可以应对的线程限制?以下代码在 64 个线程下运行良好,但在使用 65 个或更多线程时会崩溃: CRITICAL_SECTION TestCri
我有一些多线程代码(请参阅问题 Windows API Thread Pool simple example),我使用计数器来识别线程。 有人建议我在线程的回调函数中使用 InterlockedInc
在我的 const' 中 - 我希望 'secondCommand' 仅在 'firstCommand' 之后被调用。我尝试使用 EnterCriticalSection,但问题是,从哪里启动我的锁
我知道 Boost 支持互斥锁和 lock_guard,可用于实现临界区。 但是 Windows 有一个用于关键部分的特殊 API(参见 EnterCriticalSection 和 LeaveCri
我是一名优秀的程序员,十分优秀!