winapi c ++中的线程问题[关闭]

问题描述 投票:0回答:1
我只想运行我的线程,但在控制台中什么也没得到。指导说应该有效。问题是什么?

代码:

DWORD WINAPI ThreadFun(LPVOID q) { for(int i = 0;i++;i<10){ cout << "I'm working...\n"; } return 0; } int main() { DWORD t; HANDLE thr1 = CreateThread(NULL, 0, &ThreadFun, NULL, 0, &t); cout << "Main thread\n"; return 0; }

c++ multithreading winapi
1个回答
2
投票
循环是错误的。中间部分应该是条件,而步进则在第三部分中完成。您还应该等待启动的线程完成。如果您的程序在另一个线程有机会退出之前退出,则您可能会或可能不会看到该线程的任何或部分输出。

示例:

#include <Windows.h> #include <iostream> DWORD WINAPI ThreadFun(LPVOID q) { for (int i = 0; i < 10; ++i) { std::cout << "I'm working...\n"; } return 0; } int main() { DWORD t; HANDLE thr1 = CreateThread(NULL, 0, &ThreadFun, NULL, 0, &t); std::cout << "Main thread\n"; if (thr1 == nullptr) std::cout << GetLastError() << '\n'; else WaitForSingleObject(thr1, INFINITE); }

© www.soinside.com 2019 - 2024. All rights reserved.