【发布时间】:2020-06-20 17:22:09
【问题描述】:
正在阅读一些关于多线程的教程并编写了一些代码来创建一个无限线程。但是,无限循环似乎不起作用。循环内的打印例程只运行一次。找到下面的代码以供参考。无法理解我做错了什么。我正在使用 MSVC 编译器。
#include <Windows.h>
#include <iostream>
DWORD __stdcall ThreadProc(LPVOID lpParameter) {
const char* StringToPrint = (const char*)lpParameter;
//expected this block to run infinitely.
while (1) {
std::cout << StringToPrint << "\n";
Sleep(1000);
}
return 0;
}
int main() {
DWORD ThreadId = 0;
const char *Param = "Inside Thread";
LPVOID Param1 = (LPVOID)Param;
HANDLE Threadhandle = CreateThread(0, 0, ThreadProc, Param1, 0, &ThreadId);
std::cout << "Thread ID " << ThreadId << " started" << "\n";
CloseHandle(Threadhandle);
return 0;
}
【问题讨论】:
-
您的程序退出,线程没有任何机会启动并继续工作。
-
你确定它只“运行一次”吗?你用你的调试器确认了吗?还是您仅依赖该控制台输出?因为你还没有冲洗它你知道...
-
MSVC 什么?有很多版本。
-
@AsteroidsWithWings Microsoft (R) C/C++ 优化编译器版本 19.24.28316 for x86。
-
@user7860670 我的具体问题的答案未包含在您链接到的问题中。请重新考虑是否重复。
标签: c++ multithreading winapi