【发布时间】:2011-02-17 15:34:27
【问题描述】:
当我声明一个句柄时
HANDLE hThread;
我检查线程是否正在运行,
if (WaitForSingleObject(hThread, 0) == WAIT_OBJECT)
{
//Thread is not running.
}
else
{
hThread = CreateThread(......)
}
但第一次检查线程是否正在运行时失败。如何做呢?我认为我唯一需要的就是以某种方式将hThread 设置为信号状态。
编辑
我发现了类似的东西
hThread = CreateEvent(0, 0, 1, 0); //sets to handle to signaled
你同意吗?
【问题讨论】:
-
由于 C99 缺少线程库,乍一看这与为 C1x 提议的线程库完全不同,请添加平台或库标记。
-
如果您想要有意义的建议,您必须描述您的问题所在。我会评论说您正在创建一个基本上不起作用的自动重置事件。一个事件可能是你问题的解决方案,但你还没有说你的问题是什么。您的第一行代码段是错误的,因为在创建对象之前您不能调用 WaitForSingleObject,因此我的回答是。在您开始自助并解释您的目标之前,我们无法帮助您。
-
@David 我认为从代码中可以清楚地看到,如果它尚未运行,我想创建一个线程。我将通过按下按钮控件来创建它。
-
这不是很清楚。无论如何,您不需要事件,答案已经告诉您该怎么做。
-
我已经更新了我的答案,以更明确地解决您的评论所阐明的问题。
标签: c windows multithreading winapi