gpt4 book ai didi

c++ - WINAPI CreateThread 并不总是运行线程

转载 作者:可可西里 更新时间:2023-11-01 10:54:30 26 4
gpt4 key购买 nike

我正在尝试使用 Windows CreateThread API 创建和执行线程。我看到运行该程序会产生不确定的行为。我从程序的输出中看到,线程方法“my”有时会被执行,有时不会。这可能是什么原因?该程序非常简单,如下所示。还有应该用什么初始化 dwThreadID。它应该是 0 还是任何整数值? PS:在Visual Studio中编译。

#include "stdafx.h"
#include <iostream>
#include <windows.h>
using namespace std;

// DWORD WINAPI
DWORD WINAPI my (LPVOID lpParam ) {
for (int i = 0; i < 5;i++){
cout << "I am ";
}
return 0;
}

int main()
{
DWORD dwThreadID = 0;
DWORD dwThrdParam = 0;
HANDLE h = NULL;
h = CreateThread(
NULL, // default security
0, // default stack size
my, // name of the thread function
0, // no thread parameters
0, // default startup flags
&dwThreadID);
if (h == NULL){
cout <<"It is null";
}
cout << " BBBB" << endl ;
CloseHandle(h);
cout << "BBBB ";
return 0;
}

最佳答案

I am seeing from the output of the program that sometimes the thread method "my" gets executed and sometimes not. What might be the reason for this?

可能您的主线程甚至在您的第二个线程执行之前就退出了。在调用 CreateThread 后放置断点。

或者更干净的等待,只需使用 WaitForSingleObject 等待第二个线程.这有效地使您的主线程等待“我的”线程完成。

如果 CreateThread 由于某种原因失败,您可以调用 GetLastErrorCreateThread 之后,它会给你最终的答案。

Also what should dwThreadID be initialized with.

快速查看 MSDN产量如下:

A pointer to a variable that receives the thread identifier.

关于c++ - WINAPI CreateThread 并不总是运行线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36215265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com